客户端使用套接字在ubuntu linux上运行的C程序没有运行

时间:2013-03-01 12:46:56

标签: c linux sockets

我是套接字编程的新手。我今天试着执行一个程序。我的目的是检查服务器是否可用。期待输出“失败!”但我的程序似乎不起作用。代码在编译期间没有显示错误,这让我想知道我是否正确使用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);
    }

我尝试在代码本身的开头和结尾放置几个输出语句(现在已注释)。但即使这些线也不会执行。如果这是一个愚蠢的错误,请不要介意。我真的很新,我无人指导我。谢谢你的阅读。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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