私はPythonサーバーとJavaクライアントを持っています。文字列がJavaからPythonに送られるとき、それは完全ではありません。例:送信PythonサーバーはJavaクライアントから完全な文字列を受け取りません
Javaコード:PythonでHelloooooooooo
受け取ったとして:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ("localhost", 10000)
print 'starting up on %s port %s' % server_address
sock.bind(server_address)
sock.listen(5)
while True:
print 'waiting for a connection'
connection, client_address = sock.accept()
try:
print 'connection from', client_address
while True:
data = connection.recv(1024)
print 'received: ' + data
print type(data)
if data:
print 'sending data back to the client'
connection.sendall(data)
else:
print 'no more data from', client_address
break
finally:
connection.close()
Javaクライアント:
ここhe
lloooooooo
oo
コードが
Pythonのサーバーです
package server;
import java.io.*;
import java.net.*;
class Reciever_test {
public static void main(String args[]) throws Exception {
String sentence;
String modifiedSentence;
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("localhost", 10000);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
while(true)
{
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + "\n");
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER:" + modifiedSentence);
}
//clientSocket.close();
}
}クラウスD.isが言って何の無駄に
明確にするためには、Python側が一度に文字列全体を印刷したいです、それの部分ではない? – craigsparks
はい、正確です。私は後で使用する操作の識別子として後で使用するので、文字列全体が必要です –
ソケットからデータが完全になるまで収集する必要があります。おそらく '\ n'が含まれるまでです。 –