已解决的问题:gets全部换成fgets,没有之前的那个警告,这里我用了setbuf函数,在每次用fgets读取之前对缓冲区进行清空,以防止上一次读取之后遗留下的字符对下一次读取产生影响;关于代码空间释放,我找了一遍就找到socket这个函数需要释放,其他的像popen函数都有对应的pclose来关闭;socket和ioctl两个函数只在两个地方用到,GetMacFromDevice和GetIpFromDevice,ioctl函数在两个地方都有异常处理,关于异常处理,我以前接触的面向对象的语言都有try...catch处理模块,但是c语言里一旦碰到指针溢出或者对未申请存储空间的指针赋值的情况就会直接退出此进程,终端显示“段错误”,根本没办法在程序里进行判断、处理,这一点我实在搞不懂该怎么办;还有,我把全部的输出都改成中文了,觉得这样更容易让人看懂,像以前的那个上网客户端,命令行一旦输入错误,就输出一大堆英文,搞得很多人都不知道该怎么办了。
未解决的问题:二次认证。在网上没有找到与c语言表单认证相关的内容,看到有用c++的,它用的是内置的一些类,遍历网页中所有的元素,找到textbox然后填上用户名密码,再用其中的方法触发按钮。我抓包发现一次认证需要好多TCP、HTTP包,而且都很长,而且不知道如何用c语言实现。上网找了找TCP通讯过程和其数据包结构,不是很懂,这个和项目中选课系统的表单认证有关,我想等对这部分熟悉了以后再回头弄二次认证,这样可能会相对简单点。