【发布时间】:2014-01-21 16:49:12
【问题描述】:
我一直在尝试在 Java 客户端套接字和 Python 服务器套接字之间发送一个简单的字符串。这是服务器套接字的代码:
HOST=''
PORT=12000
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADRR,1)
s.bind((HOST,PORT))
s.listen(5)
device=variador()
while True:
conn,addr=s.accept()
if data=="turn_on":
respuesta=device.send_order(variador.start_order)
conn.send(respuesta+'\n')
conn.close()
而客户端代码是:
try {
Socket socket = new Socket("192.168.10.171", 12000);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
BufferedReader stdIn = new BufferedReader(
new InputStreamReader(System.in));
out.print(command);
out.close();
in.close();
socket.close();
} catch (UnknownHostException e) {
System.err.println("Unknown Host.");
// System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for "
+ "the connection.");
// System.exit(1);
}
一切正常,直到我尝试读取服务器的响应,使用这个:
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
System.out.println("echo: " + in.readLine());
}
然后代码挂了,Python服务器没有收到任何信息,我用print测试了。
在 Java 客户端中尝试先发送然后等待服务器响应是否有问题?
任何帮助将不胜感激。
【问题讨论】:
-
您在服务器中没有收到任何内容?相反,您似乎只接受连接,如果条件为真,您将写入一些数据并直接关闭连接。如果条件不成立,那么您似乎根本没有关闭套接字,但您也没有收到任何东西。
-
当 java 客户端发送“turn_on”时,我可以在 python 的控制台上打印它,因此它到达了。