2

TCP サーバーにデータを送信しようとすると、「入出力エラー」エラーが発生します。ソケットに関して、これはどういう意味ですか? 基本的に、私が使用したのと同じコードが常に正常に機能しました。ソケットを介して送信しようとしたときの入力/出力エラーの理由と、それらを確認/修正する方法を誰かが教えてくれることを望んでいました。どんな助けでも大歓迎です。

struct SOCKETSTUS {
int sendSockFd;
int recvSockFd;
short status;
long heartBeatSendTime;
long heartBeatRecTime;
long loginPackSendTime;
};

struct SOCKETSTUS sockArr[128];

if (tv.tv_sec - sockArr[i].heartBeatSendTime >= beatTim) 
{ 
   if (send(sockArr[i].sendSockFd, szBuffer, packetSize, 0) != packetSize) 
   { 
     fprintf(stderr, "Heartbeat package send failed:[%d][%s]\n", errno, strerror(errno)); 
     if (errno == EBADF || errno == ECONNRESET || errno == ENOTCONN || errno == EPIPE) 
     { 
       Debug("link lose connection\n"); Reconn(i); continue; 
     } 
   } 
   else 
   { 
     sockArr[i].heartBeatSendTime = tv.tv_sec; 
     if (sockArr[i].status == SOCK_IN_FLY)      
         sockArr[i].heartBeatRecTime = tv.tv_sec; 
   } 
}

send()呼び出しでエラーが発生しました。

4

1 に答える 1