【发布时间】:2017-04-14 08:40:11
【问题描述】:
下面是我在本地机器上的 IPv6 客户端程序代码。当我运行这个程序时,它只是像阅读模式一样暂停,甚至不打印“开始:”。 当我注释 socket() 系统调用的行时,只有它继续。
#include<stdio.h>
#include<string.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<errno.h>
int main( int argc, char *argv[])
{
printf("Start:");
int sock;
char msg[20];
struct sockaddr_in6 server;
server.sin6_family=AF_INET6;
server.sin6_port=htons(8888);
inet_pton(AF_INET6, "127.0.0.1", &(server.sin6_addr) );
sock=socket(AF_INET6, SOCK_STREAM , 0);
if( sock == -1)
{
perror("Socket Creation Failed");
return 1;
}
printf("Connecting");
if( connect(sock, (struct sockaddr *)&server , sizeof(server)) < 0)
{
perror("Connection Failed");
return 1;
}
if( read(sock, msg , sizeof(msg)) < 0)
{
perror("Reading Failed");
return 1;
}
puts(msg);
}
【问题讨论】:
-
在
printf语句的末尾使用\n尝试您的代码,以确保输出不会卡在缓冲区中。 -
"127.0.0.1"不是有效的 IPv6 地址