我的目標是從python socket向java socket發送消息。我確實看到了上面提到的資源。不過,我正在努力使Python客戶端與Java服務器交談。主要是因爲python中的(行尾)與java中的不同。python客戶端和java服務器之間的通信
說我從Python客戶端寫:消息1:ABCD消息2:EFGH消息3:Q(退出)
在Java服務器:ⅰ接收消息1:abcdefghq接着異常,因爲Python客戶端已經關閉從它的末端插座。
任何人都可以請建議一個java和python之間一致的談話的解決方案。
參考我用:http://www.prasannatech.net/2008/07/socket-programming-tutorial.html
更新:我忘了補充,我對TCP的工作。
我的Java代碼是這樣的:(服務器套接字)
String fromclient;
ServerSocket Server = new ServerSocket (5000);
System.out.println ("TCPServer Waiting for client on port 5000");
while(true)
{
Socket connected = Server.accept();
System.out.println(" THE CLIENT"+" "+ connected.getInetAddress() +":"+connected.getPort()+" IS CONNECTED ");
BufferedReader inFromClient = new BufferedReader(new InputStreamReader (connected.getInputStream()));
while (true)
{
fromclient = inFromClient.readLine();
if (fromclient.equals("q") || fromclient.equals("Q"))
{
connected.close();
break;
}
else
{
System.out.println("RECIEVED:" + fromclient);
}
}
}
我的Python代碼:(客戶端套接字)
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(("localhost", 5000))
while 1:
data = raw_input ("SEND(TYPE q or Q to Quit):")
if (data <> 'Q' and data <> 'q'):
client_socket.send(data)
else:
client_socket.send(data)
client_socket.close()
break;
OUTPUT ::
Python的控制檯(客戶端) :
發送(類型q或Q退出):abcd(按ENTER)
SEND(TYPE q或Q表示退出):EFGH(按壓ENTER)
SEND(TYPE q或Q表示退出):Q(按ENTER鍵)
ON Java控制檯(服務器):
TCPSERVER等待客戶端的5000端口
客戶/127.0.0.1:1335 IS連
收到:abcdefghq
EOL是EOL( '\ n') - 我認爲你需要發佈裸造成你的錯誤的最小代碼 – KevinDTimm 2010-11-15 14:27:33
我忘了添加,我正在處理TCP。 – 2010-11-16 05:18:30
只是一個建議的話:String fromclient;在那裏分配的效率較低。在這裏分配它:String fromclient = inFromClient.readLine();除此之外,代碼非常好。 – 2011-04-20 18:08:31