社区
网络编程
帖子详情
使用csocket,send时出现10057号错误WSAENOTCONN
zsindy
2005-07-29 11:05:17
请教各位,这个错误是不是代表连接已经断开,如果我想重连,应该怎么处理。
我试过用close和delete清理掉原来的连接,都不行,会出错
也试过不清理,直接connect,同样报错
好心的帮帮忙,这个问题困扰我好多天了,谢谢了
...全文
701
8
打赏
收藏
使用csocket,send时出现10057号错误WSAENOTCONN
请教各位,这个错误是不是代表连接已经断开,如果我想重连,应该怎么处理。 我试过用close和delete清理掉原来的连接,都不行,会出错 也试过不清理,直接connect,同样报错 好心的帮帮忙,这个问题困扰我好多天了,谢谢了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zsindy
2005-07-29
打赏
举报
回复
还有,我自己尝试重连的代码
//判断调用来源
//如果为真,表示从sendworker来,不用删除
//如果为假,表示从onsocketclose来,需要删除
if (!m_sock->bConnected){
try{
m_sock->Close();
delete m_sock;
m_sock = NULL;
}catch(CException e){
WriteLogA("delete m_sock error on MtDisconnect!");
}
//重新连接
m_sock = new SGIPSocket(this);
}
//异常中断连接,等待10秒钟,重新连接
Sleep(10000);
m_sock->Create(0, SOCK_STREAM, NULL);
int result = m_sock->Bind(m_ServerIp.GetBuffer(m_ServerIp.GetLength())
, m_ServerPort, m_UserName.GetBuffer(m_UserName.GetLength())
, m_PassWord.GetBuffer(m_PassWord.GetLength()));
就在这里出的错
zsindy
2005-07-29
打赏
举报
回复
这是创建和连接的代码
m_sock = new SSocket(this);
m_sock->Create(0, SOCK_STREAM, NULL);
int result = m_sock->Bind(m_ServerIp.GetBuffer(m_ServerIp.GetLength())
, m_ServerPort, m_UserName.GetBuffer(m_UserName.GetLength())
, m_PassWord.GetBuffer(m_PassWord.GetLength()));
SSocket是我自己写的类,继承CSocket
Bind里面
if(!Connect(SMG_ip, port))
return ERROR_CONNECT;
Submit里面
if (Send(SGIPData, psubmitstruct->totallength)==SOCKET_ERROR)
{
delete SGIPData;
//return ERROR_WRITE;
return GetLastError();
}
else
{
m_dlg->WriteLogD(SGIPData);
delete SGIPData;
return ERROR_OK;
}
我说的过一段时间,就会在send时出现10057号错误
关于delete,close时出现的错误,我也不知道是什么错误,就出现了关闭,重试,xxx三个按钮(第三个忘了)的那个窗口。
qrlvls
2005-07-29
打赏
举报
回复
使用 EnumWindow 枚举,通过 GetWindowText 获取窗口标题
也可以使用 FindWindowEx 然后通过句柄递归查询子窗口
pp_hotel
2005-07-29
打赏
举报
回复
都报什么错啊 源代码给大家看看啊
zsindy
2005-07-29
打赏
举报
回复
忘了说了,其实我的连接已经建立,并且收发了很多的数据,中间遇到的这个问题
代码是,这是在一个线程里面的,是负责发送数据的
int sret = ERROR_WRITE;
while (sret != ERROR_OK)
{
sret = pUnicomdlg->m_sock->Submit(pstruct);
if (sret != ERROR_OK){
pUnicomdlg->WriteLogA("发送一条消息失败!");
CString errs;
errs.Format("连接错误的编号:%d", sret);
pUnicomdlg->WriteLogA(errs);
Sleep(1000);
pUnicomdlg->MtDisconnect();
/*
errs.Format("submit_error:%s,%s", pstruct->sub.msgcontent, pstruct->sub.usernumber);
AfxMessageBox(errs);
*/
}
}
{
pUnicomdlg->nSendNum += 1;
pUnicomdlg->WriteLogA("成功发送一条消息!");
}
}
快乐鹦鹉
2005-07-29
打赏
举报
回复
WSAENOTCONN The socket is not connected.
表示socket没有连接。
你的connect根本没有建立连接。
将代码贴出来看看吧
zsindy
2005-07-29
打赏
举报
回复
其实我的重连,实际上是重新创建socket,重新连接,不是用原来的socket连接,所以SO_REUSEADDR属性就无所谓了吧
只是猜测
nuaawenlin
2005-07-29
打赏
举报
回复
重联的socket,最好设置SO_REUSEADDR属性
使用
C
Socket
类进行文件传输
使用
C
Socket
类传输文件
使用
C
Socket
类的网络通信实例
使用
C
Socket
类的网络通信实例
C
Socket
聊天室源码(不
使用
CArchive 和 C
Socket
File)(VS2013)
《Visual C++ 网络通信编程实用案例精选》书中的 C
Socket
聊天室
使用
了 CArchive 和 C
Socket
File,这是微软推荐的做法。但单独
使用
C
Socket
也是可以的,这个程序演示了如何单独
使用
C
Socket
。代码已
使用
Visual ...
VC编程实现
使用
C
Socket
进行有连接(TCP)通信
VC编程实现
使用
C
Socket
进行有连接(TCP)通信
C
Socket
编程介绍
C
Socket
编程介绍文档C
Socket
类是CAsync
Socket
类的派生类,它继承了Windows
Socket
API封装函数。它实现了比CAsync
Socket
类对Windows
Socket
s更高层的...本篇只介绍如何
使用
C
Socket
类实现网络连接,更多内容请见后续更新
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章