传输数据时出问题,请各位高手指点

蟑螂工作室 2003-12-15 10:36:08
使用同步Socket编程,在局域网内测试好用,但在进行局域网+Adsl进行测试时总是出问题,部分代码如下:

客户端:(局域网)
if(connect(remotesock,(sockaddr *)&remoteaddr,len)!=0)
{
::shutdown(remotesock,2);
closesocket(remotesock);
writelogs("Can't Connect Remote Server");
char t[10];
writelogs(::itoa(::WSAGetLastError(),t,10));
}
此时出错,错误提示为183
不知183错误为何错误?
...全文
76 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
蟑螂工作室 2003-12-17
  • 打赏
  • 举报
回复
up
sharkhuang 2003-12-15
  • 打赏
  • 举报
回复
学习中。。。
蟑螂工作室 2003-12-15
  • 打赏
  • 举报
回复
服务器端(Adsl):
clientsock=accept(listensock,(sockaddr*)&(clientaddr),&len);
if(clientsock==INVALID_SOCKET)
{
closesocket(clientsock);
writelogs("Accept Failure");
char t[10];
writelogs(::itoa(::WSAGetLastError(),t,10));
return;
}
//设置超时
int timeout=TimeToDelay; //设置超时时间为15秒
if(setsockopt(clientsock,SOL_SOCKET,SO_RCVTIMEO,(char *)&timeout,sizeof(timeout))!=0)
{
closesocket(clientsock);
writelogs("Setsockopt Failure");
char t[10];
writelogs(::itoa(::WSAGetLastError(),t,10));
return;
}
int inf=0; //需传送的信息值
int res=0; //返回值
DWORD filelen=0; //文件长度
//1、接收文件长度
res=recv(clientsock,(char *)&filelen,sizeof(filelen),0);
if(res==SOCKET_ERROR)
{
::shutdown(clientsock,2);
closesocket(clientsock);
writelogs("Receive file length Failure");
char t[10];
writelogs(::itoa(::WSAGetLastError(),t,10));
return ;
}
此时,提示错误Receive file length Failure
错误码为:183。
蟑螂工作室 2003-12-15
  • 打赏
  • 举报
回复
服务器端(Adsl):
clientsock=accept(listensock,(sockaddr*)&(clientaddr),&len);
::_beginthread(ClientThread,0,NULL);
if(clientsock==INVALID_SOCKET)
{
closesocket(clientsock);
writelogs("Accept Failure");
char t[10];
writelogs(::itoa(::WSAGetLastError(),t,10));
return;
}
//设置超时
int timeout=TimeToDelay; //设置超时时间为15秒
if(setsockopt(clientsock,SOL_SOCKET,SO_RCVTIMEO,(char *)&timeout,sizeof(timeout))!=0)
{
closesocket(clientsock);
writelogs("Setsockopt Failure");
char t[10];
writelogs(::itoa(::WSAGetLastError(),t,10));
return;
}
int inf=0; //需传送的信息值
int res=0; //返回值
DWORD filelen=0; //文件长度
//1、接收文件长度
res=recv(clientsock,(char *)&filelen,sizeof(filelen),0);
if(res==SOCKET_ERROR)
{
::shutdown(clientsock,2);
closesocket(clientsock);
writelogs("Receive file length Failure");
char t[10];
writelogs(::itoa(::WSAGetLastError(),t,10));
return ;
}
此处总提示Receive file length Failure
错误代码还是183

ISunwu 2003-12-15
  • 打赏
  • 举报
回复
顺便说一句:使用::GetLastError()时一定要紧跟着需要判断的语句的下面,否则,可能会被其他的语句修改。你的代码需要改动一下,然后在看这个值。
ISunwu 2003-12-15
  • 打赏
  • 举报
回复
183 == 当文件已存在时,无法创建该文件。
liu_swallow 2003-12-15
  • 打赏
  • 举报
回复
up
蟑螂工作室 2003-12-15
  • 打赏
  • 举报
回复
自己up

18,363

社区成员

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

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