Linux下客户端提示104,Connection reset by peer
我在linux下编写了一个linux客户端程序,连接windows服务器的时候经常出现错误号104,Connection reset by peer。再次发送的时候提示:错误号:32,Broken pipe。
而此时服务器端的连接还是存在的,根本没有检测到断开的信号。
麻烦大家帮帮忙。谢谢。代码如下:
int len=0;
char szbuff[1024]={0};
int count = 0;
int nNetTimeout=8000;
int nRevTimeout=8000;
string strBuff;
//GetFileBuff(fileName,strBuff);
int ret = 0;
struct sockaddr_in addr;
SOCKET data_s = socket(AF_INET,SOCK_STREAM,0);
addr.sin_family = AF_INET;
addr.sin_port = htons(g_iPort);
addr.sin_addr.s_addr = inet_addr(g_cServerIp);
ret = connect(data_s,(SOCKADDR*)&addr,sizeof(addr));
if (ret!=0)
{
printf("[%s %s] connect file Port falied\n",GetDate().c_str(),GetTime().c_str());
::close(data_s);
////closesocket(pCtx->control_s);
exit(0) ;
}
while(1)
{
sleep(1);
int ret = send(data_s,"1111111111111111111111111111111111111111111111111111111",100,0);
//int ret = send(data_s,"1234567890",10,0);
printf("[%s %s]send %d,%d,%s\n",GetDate().c_str(),GetTime().c_str(),ret,errno,strerror(errno));
if (ret !=100)
{
//close(data_s);
//exit(0);
}
}
shutdown(data_s,0);
sleep(1);
::close(data_s);
[解决办法]
对方关闭了连接
1. 可能发现你的地址不对
2. 你发送的数据不符合协议要求
3. 。。。