无法在C中建立客户端和服务器之间的连接



我正在用C写一个程序,我必须使用套接字。如果我使用通用IP (INADDR_ANY),客户端可以成功地建立到服务器的连接,但如果我使用另一个IP,如"192.168.1.100",连接失败。

服务器->

int sock = socket(AF_INET, SOCK_STREAM, 0), fd_sock, dim, dim1;
struct sockaddr_in my_addr, *client = (struct sockaddr_in*) malloc (sizeof(struct sockaddr_in));
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(port);
my_addr.sin_addr.s_addr = inet_addr("192.168.1.200");
bind(sock, (struct sockaddr *) &my_addr, sizeof(my_addr));
listen(sock, N*N);
while(1){
    fd_sock = accept(sock, (struct sockaddr *)client, &dim1);
    dim = read(fd_sock, buf, 100);
    buf[dim] = '';
    write(STDOUT_FILENO, buf, dim); 
    close(fd_sock);
}
close(sock);

客户端>

int port = atoi(argv[2]) // I give the port as second argument from code line
char *ip = malloc(15); // I give IP as first argument from code line
strcpy(ip, argv[1]);
int sock = socket(AF_INET, SOCK_STREAM, 0), fd_sock;
struct sockaddr_in my_addr;
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(port);
my_addr.sin_addr.s_addr = inet_addr("192.168.1.200");
connect(sock, (struct sockaddr *) &my_addr, sizeof(my_addr));
write(sock, ip, 15);

如果不是

my_addr.sin_addr.s_addr = inet_addr("192.168.1.200");
我使用

my_addr.sin_addr.s_addr = inet_addr(INADDR_ANY);

无论在客户端还是服务器端,套接字连接都可以正常工作。

解决方案吗?

但如果我使用另一个IP,如"192.168.1.100"

您确定您的私有ip是192.168.1.100吗?如果没有,请使用命令ipconfig在windows或ifconfig在linux

而且,您的客户机和服务器似乎都在同一台机器上。您尝试过本地主机ip(127.0.0.1)吗?这个ip地址总是指向同一台机器,无论你在哪台机器上。

相关内容