提供されたサーバー/ポートへの接続を作成しようとしています-接続を確立すると、pingパケットを送信できます(少なくとも、send()が正しいを返すように見えるので、できると思いますバイト数)、しかし、直後に recv() を実行しようとすると、呼び出しが失敗して
"Error on Receiving .. Connection Refused"
send ではエラーが発生しないのに、recv ではエラーが発生する理由についてのアイデアはありますか? これは、私の失敗の原因となっているコードの一部です。独自のスレッドで実行されています。TCP 接続は別のスレッドで行われ、そのソケット記述子がこのスレッドに渡されました (以下では m_sockfd と呼びます)。
void ConnectionManager::operator()()
{
int rc = 0, numBytes=0 ;
char reply[256] ;
// Send a ping
char PingPacket[23] ;
PreparePingPacket(PingPacket) ;
numBytes = send(m_sockfd,PingPacket,23,0);
if(numBytes == -1)
{
fprintf(stderr, "Error on Sending Ping .. \n") ;
return ;
}
if(numBytes < 23)
{
fprintf(stderr, "Didn't send the whole Ping Request .. %d \n", numBytes) ;
}
numBytes = recv(m_sockfd, reply, 256, 0) ;
if(numBytes == -1)
{
fprintf(stderr, "Error on Receiving .. %s \n", strerror(errno)) ;
return ;
}
ParsePacket(reply, rc) ;
}
実際の接続を行うコードを貼り付けることができますが、エラーが発生した場合、最初から送信が行われなかったと思いますか?
読んでくれてありがとう - 助けていただければ幸いです!