무슨 일이 일어나는지 이해하지 못합니다. localhost ("localhost", "127.0.0.1"또는 컴퓨터의 외부 IP) 이외의 다른 곳으로 소켓을 만들면 올바르게 작동합니다. 만약 그 포트를 들으면서 무언가없이 주소에 대한 소켓을 만들면 10060 (타임 아웃)을 얻지 만 10061은 이해할 수 없습니다. localhost에 갈 때 연결이 거부되는 이유는 무엇입니까? 방금 방화벽이 작동하지 않는 경우를 대비해 시도했지만, 그렇지 않습니다.Winsock은 로컬 호스트에만 연결하면 10061을 반환합니다
전에 모든 WSA 초기화 작업을 수행하고 있습니다.
_socketToServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(_socketToServer == -1){
return false;
}
p_int = (int*)malloc(sizeof(int));
*p_int = 1;
if((setsockopt(_socketToServer, SOL_SOCKET, SO_REUSEADDR,
(char*)p_int, sizeof(int)) == -1)||
(setsockopt(_socketToServer, SOL_SOCKET, SO_KEEPALIVE, (char*)p_int,
sizeof(int)) == -1)){
free(p_int);
return false;
}
free(p_int);
struct sockaddr_in my_addr;
my_addr.sin_family = AF_INET ;
my_addr.sin_port = htons(_serverPort);
memset(&(my_addr.sin_zero), 0, 8);
my_addr.sin_addr.s_addr = inet_addr(_serverIP);
if(connect(_socketToServer, (struct sockaddr*)&my_addr, sizeof(my_addr))
== SOCKET_ERROR){
DWORD error = GetLastError(); //here is where I get the 10061
return false;
}
아이디어가 있으십니까?
방화벽이나 맬웨어 방지 프로그램처럼 들립니다. 포트에서 수신 대기중인 프로그램을 실제로 실행하고 있습니까? –
포트 번호는 무엇입니까? 10060을 받기를 기대합니까, 아니면 실제로 연결하고 싶습니까? – marcinj
나는 9001,9002 ... 9033을 시도했다. 그들 중 누구도 일하지 않았습니다. 나는 듣고있는 프로그램을 가지고 있지만 같은 결과를 얻지는 않더라도. 원격 클라이언트에서 작동합니다. 실제로 테스트하기 위해, 나는 동일한 기계 내에서 퍼티를 통해 포트를 열어 보았습니다. 그리고 나는 연결을 시작할 수 있습니다! (서버 코드는 자동으로 데이터를 보내고, 터미널에서 볼 수있는 데이터입니다.) 나는 매우 혼란 스럽다 – cloudraven