1

如何为我的程序提供自定义 IP,我已经构建了一个聊天应用程序,而不是 whatsapp,基于 jus cui 的简单聊天应用程序,因为我是初学者,我使用了 inet_addr() 函数,但它说不能分配ip,它只允许本地 IP(127.0.0.1 到 127.0.0.254),你能告诉我,我该怎么办。请…。这是我的代码:-

这是有问题的代码:-

struct sockaddr_in serv_addr,cli_addr;
int serv_socket,cli_socket,cli_len = sizeof(cli_addr);
char buff[256];

serv_addr.sin_port = htons(32000);
serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
serv_addr.sin_family = AF_INET;

如果上面的代码没有帮助,这是我的链接,也许你会在那里找到一些有趣的东西,请给我一个解决方案,我真的需要帮助......

https://github.com/BossySmaxx/C-HatAPP.git

4

1 回答 1

2

从bind的文档开始,然后是适当的协议ip

当一个进程想要接收新的传入数据包或连接时,它应该使用 bind(2) 将套接字绑定到本地接口地址。在这种情况下,只有一个 IP 套接字可以绑定到任何给定的本地(地址、端口)对。

您需要向您提供serv_add主机接口的有效 IP 地址。

你可以做这样的事情来获得一个有效的ip

char *ip; 
char buffer[256]; 
struct hostent *he; 
int hostname;

hostname = gethostname(buffer, sizeof(buffer)); 
he = gethostbyname(buffer); 

// ip string
ip = inet_ntoa(*((struct in_addr*) he->h_addr_list[0])); 
于 2019-11-19T21:38:20.457 回答