0

サーバー/クライアント ソケット アプリケーションを Windows から Linux/Android に移植していますが、何が問題なのかわかりません。

基本的に、クライアントは文字列をサーバーに送信し、サーバーは文字列を大文字にしてからクライアントに文字列をエコーバックし、クライアントは結果を出力します。大文字の文字列をエコーするサーバーと結果を受信するクライアントの間のどこかでエラーが発生しますが、デバッガーや Wireshark を使用してもわかりません。

サーバーのトレース:

socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3
bind(3, {sa_family=AF_INET, sin_port=htons(9099), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
listen(3, 5)                            = 0
ioctl(3, FIONREAD, [134515712])         = -1 EINVAL (Invalid argument)
select(0, [], NULL, NULL, NULL)        

クライアントのトレース:

socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(9099), sin_addr=inet_addr("127.0.0.1")}, 16) = 0
getpeername(3, {sa_family=AF_INET, sin_port=htons(9099), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0
send(3, "four score and seven years ago\0\0"..., 128, 0) = 128
ioctl(3, FIONREAD, [0])                 = 0
select(0, [], NULL, NULL, {1, 0})       = 0 (Timeout)
write(2, "Exception code: 00000507, data: "..., 52Exception code: 00000507, data: 00000000 ((null):0)
) = 52
shutdown(3, 2 /* send and receive */)   = 0
close(3)                                = 0
exit_group(1)                           = ?
4

1 に答える 1

0

Linux では、select() api 呼び出しの最初の引数に [最大ソケット FD 値 + 1] が含まれているはずだったという問題がありました。

于 2012-11-15T22:17:14.680 に答える