CAsyncSocket连接出现Close_Wait问题

sonyE888 2006-02-07 12:46:50
初次使用socket编程,请大家多多指点

服务端用派生于CAsyncSocket的socket对象m_SerSocket监听5500好端口,客户端m_SendSocket通过5501发送到客户端,当m_SendSocket.Send();后,然后ShutDown和close。此时服务端就会出现一个该客户端连接的Close_Wait,客户端进程退出后仍然存在,这样客户端再也联不上服务器了,除非重启服务器端程序

请问怎么解决这个问题?
...全文
147 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gnixemos 2006-02-07
  • 打赏
  • 举报
回复
setsockopt
ZOU_SEAFARER 2006-02-07
  • 打赏
  • 举报
回复
服务器方没有结束此次连接?
DentistryDoctor 2006-02-07
  • 打赏
  • 举报
回复
服务器是否正确的关闭了?如果实在不行:
if(INVALID_SOCKET!=m_hSocket)
{
LINGER lingerStruct;
lingerStruct.l_onoff = 1;
lingerStruct.l_linger = 0;
setsockopt(m_hSocket, SOL_SOCKET, SO_LINGER,
(char *)&lingerStruct, sizeof(lingerStruct) );
closesocket(m_hSocket);
m_hSocket=INVALID_SOCKET;
}
cnwolf 2006-02-07
  • 打赏
  • 举报
回复
出现close_wait是网络连接断开的时候握手过程没有结束

连接断开的时候,两端都需要调用close
ddddh 2006-02-07
  • 打赏
  • 举报
回复
1. 服务器用来监听5500端口的socket不应该被关闭。

2. 试试看用setsockopt()加上SO_REUSEADDR参数。
sonyE888 2006-02-07
  • 打赏
  • 举报
回复
"服务器端的客户端描述府相应的进行ShutDown和close"???

服务端如何结束连接?如果clsoe掉,就没有监听的socket了啊
nuaawenlin 2006-02-07
  • 打赏
  • 举报
回复
服务器端的客户端描述府相应的进行ShutDown和close

18,356

社区成员

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

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