夜未眠,请高手指点winsock

lifeforu 2003-09-04 01:22:36
从客户端发数据到服务器端,如
if(OnSocketConnect(m_SockIp))
{
//AfxMessageBox(info.m_cCode);
Sleep(200);
iErrorCode = send(m_hSocket, (char*)&info, sizeof(WARNINGINFO), NO_FLAGS);
if( iErrorCode <= 0 ) return FALSE;
sends ++;
}
OnSocketClose();

因为可能会联到几个服务器端发数据,所以我在for{}里面就采用上面代码先联接
发送完了再close
服务器端
OnClientClose(){
if( m_aClientSocket == INVALID_SOCKET) return 0L;
iErrorCode = closesocket(m_aClientSocket);
m_aClientSocket = INVALID_SOCKET;
...}
1:我出现的问题是第一次联接-发送-关闭之后第二次就好像是假联接了
客户端显示联接发送正常,但服务器端没有反应
反复4-6次联接-发送-关闭之后就报告联接失败.
如果我在客户端发送之后不close()的话可以正常反应,程序退出的时候
服务器端会触发客户端发送次数的OnClientClose()
这样关闭之后再次启动客户端就和上1:情况一样
前段时间也做了个类似的,只不过是服务器向客户端发消息,好像都是正常的
夜未眠,请大家教点
...全文
41 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mathsword 2003-09-04
  • 打赏
  • 举报
回复
虽然close,消息队列还有消息阿
lifeforu 2003-09-04
  • 打赏
  • 举报
回复
服务器端Close后listen队列还是满的?
fantiyu 2003-09-04
  • 打赏
  • 举报
回复
你OnAccept没处理好

不是假连接,而是连接上了以后服务器端没accept

listen socket队列排满了,以后就连接不上了

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧