我制作了一个python服务器和一个java客户机。我的问题很简单: 服务器从客户机接收消息,但是客户机没有得到回复。你知道吗
Java客户端:
package fgd;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
public class fdassd {
public static void main(String[] args){
new Thread(){
public void run(){
while (true)
{
try {Socket socke=new Socket("censored",1977);
DataOutputStream dout=new DataOutputStream(socke.getOutputStream());
DataInputStream din = new DataInputStream(socke.getInputStream());
dout.writeUTF("Heey");
dout.flush();
String str = din.readUTF();
System.out.println(str);
dout.close();
socke.close();
}catch(Exception e){
e.printStackTrace();
}
try {
Thread.sleep(17000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}.start();
}
}
Python服务器:
hosto = '0.0.0.0'
porto = 1979
soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket created!'
try:
soc.bind((hosto, porto))
except socket.error as e:
print(e)
sys.exit()
print 'Socket bind complete'
soc.settimeout(30)
soc.listen(10)
print 'Listening...'
timeout = 8
timeout_start = time.time()
while time.time() < timeout_start + timeout:
try:
conn, addr = soc.accept()
if addr[0] != opip:
conn.shutdown(socket.SHUT_RDWR)
conn.close()
else:
msg = conn.recv(1024)
print ('--------------------------------------')
print (msg)
conn.send((playername).encode('UTF-8'))
print ('Success! The following command has been sent to: ' + opip + ':' + playername )
print ('--------------------------------------')
soc.close()
break
except socket.timeout as e:
print(e,': Server not online or wrong ip')
soc.close()
break
else:
我见过一个非常类似的问题,答案是在前面的行中加上连接发送(链接:Socket Java client - Python Server)。 但我不能用这个问题的答案,因为
conn.send(len(message_to_send).to_bytes(2, byteorder='big'))
在python2.x中似乎不起作用。这意味着我需要另一个解决方案来用UTF-8发送消息,但我不知道该怎么办。你知道吗
敬礼
在发送
playername
之前,添加以下行。这应该适用于python2和pytho3:这一行将把播放器名称的长度作为消息的前缀,这是java
DataInputStream#readUTF
方法所要求的。它被编码为两字节整数,因此在struct.pack
调用中使用'H'
。你知道吗您还需要一个
import struct
语句。你知道吗有关详细信息,请参见Python 2,3 Convert Integer to "bytes" Cleanly。你知道吗
相关问题 更多 >
编程相关推荐