我写的服务器和客户端代码客户端可以正常连接服务器但只能在本地地址我不知道如何通过互联网连接
int main()
{
struct addrinfo host_info;
struct addrinfo * host_list;
struct sockaddr sa;
struct sockaddr_in ip4addr;
memset(&host_info, 0, sizeof host_info);
host_info.ai_family = AF_INET; // IP version not specified. Can be both.
host_info.ai_socktype = SOCK_STREAM;
getaddrinfo(NULL, "5555", &host_info, &host_list);
int s;
s=socket(host_list->ai_family,host_list->ai_socktype,host_list->ai_protocol);
if(s==-1) printf("error\n");
int status = connect(s, host_list->ai_addr, host_list->ai_addrlen);
if (status == -1) printf("connect error\n");
char *message="Hi there!";
send(s, message, 10, 0);
return 0;
}
我尝试将getaddrinfo中的NULL更改为ip地址,但始终无法连接
答案 0 :(得分:0)
您尝试通过互联网连接哪个TCP / IP地址?
getaddrinfo()应该具有某种IP地址,否则它将不知道连接的位置。这就像试图在邮件中发送一封没有地址的信件。
此外,您可能无法连接的原因很多。你的防火墙可能阻塞某些东西......另一端可能有防火墙阻塞了某些东西...... AV软件甚至可以检测到它认为“怪异”的连接并阻止它...... IP地址可以是错的。
您可以谈谈您已经完成的故障排除以及您所看到的问题。