用WinSock控件编写聊天室软件碰到的几个问题,希望大家指教。
因为就是写着玩,所以基本思路很简单,一个服务器端程序,一个客户端程序。所有客户发出的消息都发给服务器,服务器再转发给相应客户,或是所有客户。实际编写中碰到了几个问题:
1, 当连接两个或两个以上客户时,只有最后一个客户能很快更新,而前面的客户更新巨慢,而且我看着好象是它把好几条信息合并成了一条信息。比如说别的客户发了三条信息,应该是三行,到前面的客户时却把三条信息合到了一行上。我可以肯定的是他一定是只触发了一次客户的DataArrival事件。在调试中,我发现了令我困惑的一个问题,那就是有时服务器SendData时并没有立刻触发客户的DataArrival。比如说在新建客户连接时要更新以前客户的在线用户的列表。我的做法是在Accept以后,对各个客户先发一个清除用户列表的消息,怪,没有触发客户端程序的DataArrival,我认为并不是速度问题,因为我在这停了一下,以局域网的速度很快就该到了,而当我走到下一个SendData时一并触发了。
2, WinSock的Close事件是怎么写的?我在服务器端的Close里写了一些代码,客户端关闭时触发,结果他好象是反复执行,跟死循环一样。非要我在Close事件里显式的调用一下Close方法才能搞定。它就是这样写的吗?
3, RemoteHost怎么只能返回空,害的我图省事只能显示ID