问题背景:客户端向服务器连续发送两个自定义的struct,服务器来接收
客户端和服务器在同一台机器上时服务器接收正常,把客户
端放在其他机器上时服务器接收出错通过GetLastError()和FormatMessage()两个函数检查到错误是
“无法立即完成一个非阻挡性套接字操作”,那么这个错误怎么解决
比较好呢?请各位给个意见。
客户端和服务器在同一台机器上时服务器接收正常,把客户
端放在其他机器上时服务器接收出错通过GetLastError()和FormatMessage()两个函数检查到错误是
“无法立即完成一个非阻挡性套接字操作”,那么这个错误怎么解决
比较好呢?请各位给个意见。
解决方案 »
- exe退出时弹出这个,是不是线程的问题??
- 一个程序,用了directShow,mfc,gdi+. 在新装的win2000上运行不了。
- 现在用的编辑器没有代码的自动对齐功能,好郁闷啊。有什么样的工具可以使代码自动对齐啊。哪个兄弟帮帮忙啊?
- (急)VC界面设计的几个简单问题,高分求助(100++),不够再加,8月25号在线等待。。。
- 看深入浅出MFC的第三章的有问题``请教``
- 我在CEdit的OnCreate中,用m_font.GetFont()却得不到字体?what?
- 有谁碰到过这样的问题?
- 如何使VC的对话框不可见?
- 一个关于非模态对话框的问题
- 能给的我都给了。调用DLL函数为何这么麻烦、?
- 请大家把经常去的国外的一些经典开发网站写出
- 关于wchar_t的问题
能不能给我讲一下产生这种错误的原因是什么?
我的程序是在调用recv()时产生这种错误
查了一下MSDN里面有这样一段话:
This error is returned from operatons on non-blocking sockets that cannot be completed immediately, for example Receive when no data is queued to be read from the socket. It is a non-fatal error, and the operation should be retried later.好像是说因为Socket没有数据供读取,可是我的两个struct是连续发送的,
而且第一个struct的接收是正确的,Socket中不可能没有数据啊
这种事见的多了.
能不能把你的解决办法说的更清楚一些呢?
希望能向你请教这个问题
能留给我你的mail吗?
我的mail:[email protected]
我的第一个struct的大小是已知的
在recv()的时候我读的字节数正好是这个结构的大小
不可能把两个一起读完的
我的两个函数.关于调用send老是返回WOULDBLOCK.
FD_WRITE表示,现在网络已经准备好发送数据了,所以大都在这个函数中才SEND()。当然,一般情况下随意地调用SEND()也很少出问题。
2。关于什么时候有这个消息,取决于你是否调用了ASYNCSELECT()函数,如果你使用CASYNCSOCKET及CSOCKET类,默认情况下,CREATE()时它自动调用了ASYNCSELECT(FD_WRITE),于是连接建立后,ONSEND()就会被调用。ASYNCSELETE(FD_WRITE)表示,需要发送数据,系统接到这个请求后,在网络不忙的时候,就会调用ONSEND()。
3。需要发送数据时,先将数据缓存起来,然后调用ASYNCSELECT(FD_WRITE);在ONSEND中发送缓存中的数据。
我用的是Winsock而不是MFC,
可以用WSAWaitForMultipleEvents和WSAEnumNetworkEvents
判断FD_READ事件,然后处理这个事件