複数のマシンで動作するソケットサーバーがあります。 マシン以外の魅力のように機能します。acceptがEFAULTで失敗する
サーバーは正しくバインドしますが、クライアントが接続しようとするとエラー(EFAULT)が戻されます。
誰かが、問題の原因が何であるか考えているのかもしれません。ありがとうございます!
マシンに関するいくつかの情報に: Linuxバージョン2.6.18.3 gccのバージョン3.3.5(Debianの1:3.3.5-13)
ソケットサーバのソースは、前方かなりストレートです。
...
...
struct sockaddr_in server_addr;
struct sockaddr* client;
socklen_t alen;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd == -1) {
...
}
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = INADDR_ANY;
server_addr.sin_port = htons(port);
if(bind(sockfd, (struct sockaddr *) &server_addr, sizeof(server_addr)) < 0){
...
}
if(listen(sockfd,BACKLOG) == -1){
...
}
alen = sizeof(client);
new_fd = accept(sockfd, client, &alen);
if (new_fd == -1) {
/*
* this part of the code is executed
* errno is set to 14
*/
}
私に正しい方向を指摘していただきありがとうございます。
クイックヘルプEric!あなたの提案は問題を解決しました。すてきな一日を! – Florian