我正在将服务器/客户端套接字应用程序从 Windows 移植到 Linux/Android,但我似乎无法弄清楚问题所在。
基本上,客户端所做的是将一串字符发送到服务器,服务器将字符串大写,然后将字符串回显给客户端,客户端打印出结果。在服务器回显大写字符串和客户端接收结果之间的某个地方,有一个错误,但即使使用调试器或 Wireshark,我也无法完全弄清楚。
服务器的strace:
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) = ?