제공되는 서버/포트에 대한 연결을 만들려고합니다. 연결을 만들 때 적어도 패킷을 ping 할 수 있습니다. 나는 보내기()) 정확한 바이트 수를 반환하는 것 때문에 내가 할 수라고 생각,하지만 난) (RECV하려고 할 때 바로 후, 전화가 왜 전송이 것에연결이 Recv()에서 거부되었습니다. send가 제대로 작동하는 것 같습니다.
"Error on Receiving .. Connection Refused"
어떤 아이디어를 말하는 실패 에러를 내지 않겠지 만, 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) ;
}
나는 실제 연결을 수행 내 코드를 붙여 넣을 수 있지만,로 시작하는 다음 전송을 통해 간 적이없는 것 오류를했다면 내가 알 것?
읽어 주셔서 감사합니다.
WSAGetLastError()를 사용하여 Winsock 오류 코드를 가져온 다음 [Microsoft] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms741580(v=vs.85).aspx) 그것이 무엇을 의미하는지 알기 위해. – Serdalis
대학의 서버에서 코드를 실행했는데 완벽하게 작동합니다. 집에서이 문제 만 치고있는 것처럼 보입니다. 포트 포워딩을 사용하여 특정 포트로 들어오는 모든 트래픽을 지시하고 들어오는 연결을 확인할 수 있는지 확인했지만 recv()가 61/Connection Refused를 발행하는 이유를 확인하지 못했습니다. –