大家好,最近初学TCP编程,自己依据范例做了一个依靠服务名访问的随机端口多客户服务器和客户端。服务器管理多个客户端的连接和数据,客户端发送命令给服务端,由于只是为了验证,服务端仅仅将客服端的数据再发货客户端接收而已。
在本机运行时完全达到了我的预期要求。在解决了防火墙问题后通过网络也没问题,只是通过网络连接的时候建立连接的时间稍长些,不过连接成功后传送数据还是很快的,传送几百KB的数据也不需要等待多长的时间。各客户端数据独立不受干扰。
问题是,但我将客户端断开连接后再重新连接后可以收到服务器发送的欢迎信息,通过调试发现客户端发送的数据服务器都能收到而且也发送给客户端了,但是客服端却收不到数据。调试发现,客户端的接收循环一直在等待数据,可是服务器已经发送出数据了。如果说客户端重新连接后端口与服务器的信息不匹配了,那么为什么一开始却可以收到欢迎信息呢?
附件中是我的源码,希望高手能解答我的疑惑,更希望指出我源码中的缺陷,谢谢大家。
继续
我不知道我的回答能不能帮上你的忙,但是可以肯定你的成绩确实写得很好。你很优秀。我测试了一下服务端的程序没有什么问题,有问题的,程序在于你的客户端。你可以尝试把客户端的程序读和写放在一个will循环里面。写的话可以用一个超时检测。到达毫秒级的时间以后,然后进行堵的操作。写的这一个操作,放在条件判断里面。这样的话,tc p的句柄引用过来以后优先判断条件超时之后执行后续的写操作,然后最后执行关闭TCP。这样问题应该就可以解决了。