关于SOCKET中Connect的问题

skylinnan 2008-03-03 10:20:43
我建立了一个SOCKET,并向它发送BUF,设计如下
建立SOCKET:
WSADATA m_WSAData;
WSAStartup(MAKEWORD(2,2),&m_WSAData);
m_SockID=socket(AF_INET,SOCK_STREAM,0);
u_long netaddr;
netaddr=inet_addr("192.168.1.55");
m_SvrAddr.sin_addr.S_un.S_addr=netaddr;
m_SvrAddr.sin_family=PF_INET;
m_SvrAddr.sin_port=htons(8001);
rtn=connect(m_SockID,(LPSOCKADDR)&m_SvrAddr,sizeof(SOCKADDR_IN));
if(rtn!=0){
int err=WSAGetLastError();
CString err_msg;
err_msg.Format("%d",err);
MessageBox("失败原因"+err_msg);}
else
MessageBox("链接成功");




发送buf: int rt;
char buf[41]="";
int j=0;
buf[j++]=(char)0xff;
buf[j++]=(char)0x00;
buf[j++]=(char)0xff;
buf[j++]=(char)0xff;
buf[j++]=(char)0xff;
buf[j++]=(char)0xff;
buf[j++]=(char)0xff;
buf[j++]=(char)0xff;
buf[j++]=(char)0xff;
for(int k=0;k<100;k++){
rt=send(m_SockID,buf,sizeof(buf),0);
if(rt<0){
MessageBox("发送失败");
break;
}
}
MessageBox("Send OK");



关闭SOCKET:
int rtn;
if(m_SockID!=INVALID_SOCKET) rtn=closesocket(m_SockID);
if(rtn!=0)MessageBox("退出失败");
else
MessageBox("退出成功");
m_SockID=INVALID_SOCKET;



当执行了几次发送BUF后(循环100次向SOCKET_ID缓冲区发送数据),关闭socket(此时,并没有接受BUF的操作),然后再创建并连接SOCKET,就会在connect中出现错误。
但同样的流程,只是修改了发送BUF(另外写的一段代码,只发送一字节的BUF,并只发送一次,后关闭socket,然后再创建并连接SOCKET,就不会有任何问题)
...全文
91 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiger波波 2008-03-03
  • 打赏
  • 举报
回复
循环发送后,延迟一下,等发送完毕,再关
试试

18,356

社区成员

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

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