连接功能偶尔会失败?

时间:2013-12-02 04:55:03

标签: c sockets

我正在使用连接功能(http://linux.die.net/man/2/connect),它只在某些情况下有效。以前它曾经正常工作,现在几乎没有用。自从我2周前第一次写代码以来,代码没有改变,所以结果不应该改变。我认为这与我的网络有关。我正在使用端口5301(几乎随机选择)所以可能会出现某种阻塞?我正在使用本地IP 127.0.0.1。

服务器代码:

    int connectionID = 0, listenID = 0;                         
    struct sockaddr_in sad;
    listenID = socket (AF_INET, SOCK_STREAM, 0);                         
    memset (&sad, 0, sizeof(sad));          
    sad.sin_family = AF_INET;                                
    sad.sin_addr.s_addr = INADDR_ANY;                       
    sad.sin_port = htons(5301);    
    bind (listenID, (struct sockaddr *)&sad, sizeof(sad));

客户代码:

    int sockID = 0;     
    struct sockaddr_in sad;
    sockID = socket (AF_INET, SOCK_STREAM, 0); 
    sad.sin_family = AF_INET; 
    sad.sin_port = htons(5301);
    inet_pton (AF_INET, serverIP, &sad.sin_addr.s_addr);
    if (connect (sockID, (struct sockaddr *)&sad, sizeof(sad)) < 0)
    {
         printf ("Error Connecting to Server\n");
         return;
    }

IP作为参数传入

1 个答案:

答案 0 :(得分:1)

很难确切地说出问题是什么,但如果客户端突然报告“拒绝连接”,则可能是服务器不再正在侦听。

服务器应检查来自bind的返回值是否有任何错误,以确定它是否因任何原因无法绑定到端口5301。您在此处发布的服务器代码不会检查可能出现的任何错误。