windows socket 巨难问题
我使用winsock很长时间了,现在做的是基于client/server,server支持多个连接。理想的socket通讯没问题,可残酷的现实总是让人恼火。网络I/O问题实在难(非阻塞的socket,socket窗口,单线程):
1。CAsyncSocket::里的Send()什么情况返回SOCKET_ERROR,为什么会失败,如何解决
2。响应OnReceive里的Receive()函数有时候为什么也会失败,如何解决?
请大虾们详细讨论,甚至可以考虑到Windows对tcp/ip的实现机制。另外,欢迎大虾们讲解通讯中认为关键的部分。
还有小问题:就是我的可用分那么多,怎么我只能给这个问题加79分?
问题点数:79、回复次数:5Top
1 楼redoak2000(小舟一叶)回复于 2001-02-18 11:46:00 得分 0
关注。Top
2 楼Un1()回复于 2001-02-18 11:53:00 得分 9
我看你还是改用Mswinsck.ocx吧。Top
3 楼houyb_vc(逍遥)回复于 2001-02-18 14:35:00 得分 10
试着直接用API的socket调用,不使用CAsyncSocket类Top
4 楼meteorshower(流星宇)回复于 2001-02-18 15:05:00 得分 30
建议阅读 windows网络编程 机械工业出版社
i/o模型可以选择五中:
select模型
AnsyncSelect异步选择
Event事件模型
还有一种记不清了
完成端口
直接使用Api控制比较方便,并且也容易查错误
Top
5 楼E()回复于 2001-02-18 15:11:00 得分 30
send()时,对方接收窗口(rwnd)为零并且本方发送缓冲区满,则send error
recv()时,若缓冲区大小小于数据的大小,也会返回error。但数据还是接收到了。
其他线程正在recv(),recv()会失败。,。。。
Top




