套接字总是被关是怎么回事呀??????????????

smartbear_2008 2007-07-20 04:30:27
我写了一个用TCP传文件的函数,总是在While循环中套接字被关闭。
错误号是:10053:您的主机中的软件放弃了一个已建立的连接。
不知是怎么回事?哪位高手给指点指点。
...全文
189 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
smartbear_2008 2007-07-20
  • 打赏
  • 举报
回复
BOOL CCVcomProtocolTestDlg::Transmission(CString m_sIP,CString Pathname,CString Filename)
{
WSADATA wsaData; //开始socket编程
SOCKET ServerSocket;
CString str;

ServerSocket=socket(PF_INET,SOCK_STREAM,0); //创建服务器端Socket,类型为SOCK_STREAM,面向连接的通信

if(ServerSocket == INVALID_SOCKET)
{
AfxMessageBox("无法创建服务器socket!");
return FALSE;
}

DWORD dwip;
if((dwip=inet_addr(m_sIP))==INADDR_NONE)
{
AfxMessageBox("IP赋值错误");
return FALSE;
}

SOCKADDR_IN sockStruct;
sockStruct.sin_family=AF_INET; //使用TCP/IP协议
sockStruct.sin_port = htons(500);
sockStruct.sin_addr.S_un.S_addr = dwip;
memset(sockStruct.sin_zero,0,8);
int a=0;
if(connect(ServerSocket,(LPSOCKADDR)&sockStruct,sizeof(sockStruct)) == SOCKET_ERROR)
{

return FALSE;
}
str.Format("VCOMFILE rtsp://%s RTSP/1.01\r\n",m_sIP);
str += "NAME:"+Filename + "\r\n";
CFileStatus status;
CFile file;
file.Open(Pathname,CFile::modeRead | CFile::typeBinary);
if(!file)
{
return FALSE;
}
file.GetStatus(status);
LONG Filesize = status.m_size;
CString sFilesize;
sFilesize.Format("%d",Filesize);
str += "LENGTH:"+sFilesize + "\r\n\r\n";
send(ServerSocket,str.GetBuffer(0),str.GetLength()+2,0);
char *buffer = new char[1025];
int i= 0;
Sleep(1000);
while(1)
{
i=file.Read(buffer,1024);
i = send(ServerSocket,buffer,i,0);//就第二次进入这里时出错
a = GetLastError();
if(i<1024)
{
break;
}
}

struct timeval timeout ;
fd_set r;

FD_ZERO(&r);
FD_SET(ServerSocket, &r);
timeout.tv_sec = 5; //连接超时15秒
timeout.tv_usec =0;
int ret = select(ServerSocket+1,&r,NULL,NULL,&timeout);
if ( ret <= 0 )
{
closesocket(ServerSocket);
file.Close();
delete buffer;
return FALSE;
}
else
{
recv(ServerSocket,buffer,1024,0);
str = buffer;
if(str.Find("200 OK")>=0)
{
closesocket(ServerSocket);
file.Close();
delete buffer;
return TRUE;
}
}

closesocket(ServerSocket);
file.Close();
delete buffer;
return FALSE;
}

18,356

社区成员

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

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