2

基本的にサーバーとクライアントの関係を実行するプログラムを書いています。クライアントを実行すると (サーバーが既に実行されているときに、関連するパラメーターを指定して)、次の errno メッセージが表示されます:
引数が無効
です。関連するコードの一部を次に示します。

if(argc != NUM_OF_ARGS)
{
    fprintf(stderr,"usage: Client <CLIENT NAME> <SERVER ADDRESS> <SERVER PORT>\n");
    exit(1);
}

int serverPort = atoi(argv[3]);

if(serverPort == 0){
    cerr << serverPort<<endl;
    fprintf(stderr,"bad arguments\n");
    exit(1);
}

//update the local machine's addr
struct sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(serverPort);

inet_aton(argv[2],&(server_addr.sin_addr));
memset(&(server_addr.sin_zero),'\0',8);

int fd = socket(PF_INET,SOCK_STREAM,0);
if(fd < 0){
    fprintf(stderr,strerror(errno));
    exit(1);
}

if(connect(fd,(sockaddr*)&server_addr,BUFFERSIZE) < 0){
    fprintf(stderr,strerror(errno));//My program gets here and exits.
    exit(1);
}

別のメモ: 引数として指定しているアドレスの形式は 132.65.151.68 です。

ここで何が間違っていますか?

4

1 に答える 1

2

connect3番目のパラメーターとして、2番目の引数が指す構造体のサイズを期待します。詳細man 2 connectはをご覧ください。

于 2011-05-22T18:43:01.020 に答える