【发布时间】:2014-11-28 04:07:13
【问题描述】:
我创建了一个 python“队列”(类似于 JMS 协议),它将接收来自两个 Java 客户端的问题。 python-server 将接收来自其中一个 Java 客户端的消息,第二个将读取问题并发布答案。连接和消息传递有效,当 Java 客户端回答一个很长的字符串时,问题就来了。
python收到的响应不完整!更糟糕的是,消息被切割成一定数量的字符,并且始终保持相同的长度,但是,如果其他人托管服务器,则该数字会有所不同。 (即:friend1 托管服务器,friend2 发送响应,收到的长度:1380chars。Friend2 托管服务器,friend1 发布答案,收到的长度:1431chars)这是服务器端 python 代码:
s = socket.socket()
host = socket.gethostname()
# host = "192.168.0.20"
port = 12345
s.bind((host, port))
s.listen(5)
while True:
c, addr = s.accept()
# print 'Got connection from', addr
message = c.recv(8192) #Is this length a problem?
# print message
message = message.strip()
ipAddress = addr[0]
我在 StackOverflow 上阅读了这里的问题,c.recv() 对大量字节应该没有问题,我们的响应接近 1500 个字符。这是java客户端:
private void openConnection(){
try {
socket = new Socket(HOST, PORT);
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
socketPregunta.getInputStream()));
stdIn = new BufferedReader(new InputStreamReader(System.in));
} catch (Exception e) {}
}
public void sendAnswer(String answer) throws IOException{
openConnection();
out.write("PUBLISH-" + answer); //This answer is send incomplete!
out.flush();
closeConnection();
}
提前致谢!
【问题讨论】:
标签: java python sockets printwriter