在使用socket做TCP网络编程时,了解了一点儿:
在使用close()关闭基于TCP的socket描述符时,系统内核会自动发送一个叫做FIN的握手包。那么,对方使用read()接收数据时会返回一个接收长度为0。因此,在一个while()循环里,可以以这个read()的返回值作为循环的判断条件。
对于一个简单的C/S网络通信,在client端发送给/接收于server端的数据;在server端,每accept一个链接,就会生成一个新的处理任务。在client的程序里,如果通信任务要结束,可以使用close()关闭socket描述符。在服务器端的处理任务直接使用while()来发送/接收数据,在 client使用close()关闭时,server端也会自动关闭与这个socket关联的描述符。