0
제공하는 주소에 연결하는 간단한 클라이언트를 구현하려고합니다. 내가 sockaddr_in 구조체에 넣은 후에 주어진 주소와 IP 주소와 포트를 출력하고 있음을 알 수있을 것이다. 동일한 주소 여야하지만 두 개의 다른 주소가 있습니다.sockaddr_in이 잘못된 IP 주소를 가져옵니다. cpp
여기 내 코드입니다 :
int createConnection(char * address, char * port) {
cout << address << " " << port << endl;
struct sockaddr_in server;
server.sin_family = AF_INET;
server.sin_port = htons(atoi(port));
inet_aton(address,&(server.sin_addr));
memset(&(server.sin_zero), '\0', 8);
if ((sockFd = socket(PF_INET,SOCK_STREAM,0)) == -1) {
perror("client: socket");
}
if (connect(sockFd,(const sockaddr *)&server,sizeof(struct sockaddr_in)) == -1) {
close(sockFd);
perror("client: connect");
}
char s[INET_ADDRSTRLEN];
inet_ntop(AF_INET, (struct sockaddr *)&server, s, sizeof s);
printf("client: connecting to %s, %i\n", s, server.sin_port);
printf("connected");
return 0;
}
그리고 출력은
132.65.151.39 3000
client: connecting to 2.0.11.184, 47115
내 질문입니다 :
- 는 왜 두 개의 서로 다른 주소를 볼 수 있습니까?
- 어떻게 연결이 실패하지 않습니까?
나중에 내 프로그램이 recv()에서 차단되므로 나중에 원하는 위치에 연결하지 못했다고 생각됩니다. 감사!
당신이inet_ntop()
에 잘못된 일을 전달하는 것 같습니다
감사! 다른 포트 번호를 남겨 둡니다. 어떤 아이디어? – yotamoo
동일합니다. 이제 서버에서 아무것도 얻지 못하는 이유를 알 수 없습니다. 감사합니다! – yotamoo