0

私はソケットプログラミングが初めてです。今日はプログラムを実行してみました。私の意図は、サーバーが利用可能かどうかを確認することでした。「Failed!」という出力が期待されます。しかし、私のプログラムはうまくいかないようです。コンパイル中にコードにエラーが表示されないため、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てサーバーに接続し、writeまたはを使用sendしてデータを送信してみてください。

于 2013-03-01T12:50:34.260 に答える
1

また、接続する前に設定する必要がありservAdr.sin_family = AF_INETます。接続に失敗した場合perror()は、エラーを出力するために使用することをお勧めします。

于 2013-03-01T13:02:11.050 に答える