クライアントをサーバーに接続しようとすると無効な引数エラーが発生します。オンラインのカップルのスレッドは、これはaddrlenが正しくないときに起きるかもしれないと言いましたが、長さを数えた後にそれをリテラル値に変更しようとしましたが、うまくいきませんでした。私も運がないstrlen()を試しました。とにかく、関連するコード -BSDソケット接続時に無効な引数
サーバー -
struct sockaddr name;
int main(int agrc, char** argv) {
int sock, new_sd, adrlen; //sock is this socket, new_sd is connection socket
name.sa_family = AF_INET;
strcpy(name.sa_data, "127.0.0.1");
adrlen = strlen(name.sa_data) + sizeof(name.sa_family);
//make socket
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0) {
printf("\nBind error %m", errno);
exit(1);
}
//unlink and bind
unlink("127.0.0.1");
if(bind (sock, &name, adrlen) < 0)
printf("\nBind error %m", errno);
//listen
if(listen(sock, 5) < 0)
printf("\nListen error %m", errno);
//accept
new_sd = accept(sock, &name, (socklen_t*)&adrlen);
if(new_sd < 0) {
printf("\nAccept error %m", errno);
exit(1);
}
クライアント -
int main(int agrc, char** argv) {
int sock, new_sd, adrlen;
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0) {
printf("\nserver socket failure %m", errno);
exit(1);
}
//stuff for server socket
name.sa_family = AF_INET;
strcpy(name.sa_data, "127.0.0.1");
adrlen = strlen(name.sa_data) + sizeof(name.sa_family);
cout<<"\nadrlen: "<<adrlen<<"\n";
if(connect(sock, &name, adrlen) < 0) {
printf("\nclient connection failure %m", errno);
exit(1);
}
私が間違っている可能性が何も表示されませんが、私は、私はちょうど何かを見下ろすかを知らないかもしれないと思います何か。どんな助けもありがとうございます。