C-插座编程,IPv6客户端程序不起作用



以下是我在本地计算机上使用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);
   }

问题是inet_pton函数。在IPv6甲酸盐(0:0:0:0:0:0:0:0:1)中传递回环地址后,程序运行良好。

您的程序被困在阻止读取(袜子...)上。您需要添加所有拥有printf n的地方以冲洗输出到stdout,以查看printf!

最新更新