recv的问题!

edison_3xy 2005-07-04 10:14:44
服务器端监听客户端,用非阻塞模式,当accept一个连接后,就开一个线程,这个线程只是用于接收客户端发过来的数据!
但我这里的问题是,客户端在一个connect操作后,并没有send任何数据给服务器,而服务器用于接收客户端的数据的线程却可以接受到有数据,而且可以不停的接收,就算客户端关了也会收到有数据。
但这个recv返回的是SOCKET_ERROR,请教高手,为什么会出现这种情况?
...全文
186 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
edison_3xy 2005-07-04
  • 打赏
  • 举报
回复
to lsgt()
也就是说accept返回的套接节和accept的第一个参数里的套接字具用同样的属性,那我怎么把一个套接字设置成阻塞模式??
lsgt 2005-07-04
  • 打赏
  • 举报
回复
The accept function extracts the first connection on the queue of pending connections on socket s. It then creates and returns a handle to the new socket. The newly created socket is the socket that will handle the actual connection; it has the same properties as socket s, including the asynchronous events registered with the WSAAsyncSelect or WSAEventSelect functions.

softrain 2005-07-04
  • 打赏
  • 举报
回复
你把相关代码贴出来,怀疑你的recv调用有问题。
edison_3xy 2005-07-04
  • 打赏
  • 举报
回复
是这样的:
newSocket=accept(m_sockListen,(struct sockaddr *)&from,&len);
这个accept操作中m_sockListen是被设置成非阻塞的,而newSocket我并没有把它设置成阻塞或是非阻塞模式。我想也是这里出点问题。帮我看年看
Caps77 2005-07-04
  • 打赏
  • 举报
回复
你把recv的socket设置成非阻塞了吧
lsgt 2005-07-04
  • 打赏
  • 举报
回复
这个正常啊。你是非阻塞模式,recv返回SOCKET_ERROR,就是recv出错了,你用GetLastError检查一下错误码。
edison_3xy 2005-07-04
  • 打赏
  • 举报
回复
自己顶一下

18,357

社区成员

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

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