問題は、クライアントが使用する特定のポートを設定することですが、設定したポートではなく別のポートを使用してサーバーに接続することです。なぜこれが起こるのですか?
接続機能は次のとおりです。
int CONECT_T0_SERVER(void)
{
int iSetOption = 1;
sock_descriptor = socket(AF_INET, SOCK_STREAM, 0);
setsockopt(sock_descriptor, SOL_SOCKET, SO_REUSEADDR, (char*)&iSetOption,
sizeof(iSetOption));
if(sock_descriptor < 0)
printf("Failed creating socket\n");
memset(&sa_loc, 0, sizeof(struct sockaddr_in));
sa_loc.sin_family = AF_INET;
sa_loc.sin_port = htons(10002);
sa_loc.sin_addr.s_addr = inet_addr("10.10.1.30");
ret = bind(sock_descriptor, (struct sockaddr *)&sa_loc, sizeof(struct sockaddr));
bzero((char *)&serv_addr, sizeof(serv_addr));
server = gethostbyname("10.10.1.120");
// server = gethostbyname("192.168.123.103");
//server = gethostbyname("127.0.0.1");
if(server == NULL)
{
printf("Failed finding server name\n");
return -1;
}
serv_addr.sin_family = AF_INET;
memcpy((char *) &(serv_addr.sin_addr.s_addr), (char *)(server->h_addr), server- >h_length);
serv_addr.sin_port = htons(10000);
//serv_addr.sin_port = htons(1234);
if (connect(sock_descriptor, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
{
printf("Failed to connect to server\n");
return -1;
}
else
{
printf("Connected successfully \n");
}
return 0;
}
サーバーポートは10000で、クライアントポートは10002に設定されていますが、サーバーに接続するとクライアントポートが異なります。