0

我是套接字编程的新手。我今天尝试执行一个程序。我的目的是检查服务器是否可用。期待输出“失败!” 但我的程序似乎不起作用。代码在编译过程中没有显示错误,这让我想知道我是否正确使用了 Linux API。以下是我的代码...

#include<stdio.h>
#include<string.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>

int main()
    {
    char servIP[]="127.0.0.1";
    char check[]="check";
    int SrvConnect,ret;
    struct sockaddr_in servAdr;
    //printf("Test");
    SrvConnect=socket(AF_INET,SOCK_STREAM,0);
    servAdr.sin_addr.s_addr=inet_addr(servIP);
    servAdr.sin_port=htons(1000);
    ret=sendto(SrvConnect,&check,sizeof(check),0,(struct sockaddr *)&servAdr,sizeof(servAdr));
    if(ret==-1)
        printf("\nFailed!\n");
    //printf("Test");
    close(SrvConnect);
    }

我尝试在代码本身的开头和结尾放置几个输出语句(现在已注释)。但即使是那些行也不会执行。请不要介意这是一个愚蠢的错误。A 对此真的很陌生,我没有人可以指导我。谢谢你的阅读。

4

2 回答 2

2

问题是您已经创建了一个 TCP 套接字。TCP 套接字需要先连接到服务器,然后才能发送任何内容。尝试connect先调用连接服务器,然后使用writesend发送数据。

于 2013-03-01T12:50:34.260 回答
1

您还需要servAdr.sin_family = AF_INET在连接之前进行设置。如果连接失败,最好使用perror()打印错误。

于 2013-03-01T13:02:11.050 回答