[英]Java client python server socket programming
我在Java中有一個客戶端程序,該程序將消息“ Hello”發送到python服務器。
Java代碼
import java.io.*;
import java.net.*;
public class MyClient {
public static void main(String[] args) {
try{
Socket soc=new Socket("localhost",2004);
DataOutputStream dout=new DataOutputStream(soc.getOutputStream());
dout.writeUTF("Hello");
dout.flush();
dout.close();
soc.close();
}catch(Exception e){
e.printStackTrace();}
}
Python服務器代碼
import socket # Import socket module
soc = socket.socket() # Create a socket object
host = "localhost" # Get local machine name
port = 2004 # Reserve a port for your service.
soc.bind((host, port)) # Bind to the port
soc.listen(5) # Now wait for client connection.
while True:
conn, addr = soc.accept() # Establish connection with client.
print ("Got connection from",addr)
msg = conn.recv(1024)
print (msg)
if ( msg == "Hello Server" ):
print("Hii everyone")
else:
print("Go away")
問題是Java客戶端能夠將Hello消息發送到python服務器,但是在python端,else語句始終執行,輸出為“ Go away”。 python version 2.7
輸出:
('Got connection from', ('127.0.0.1', 25214))
Hello
Go away
您正在從客戶端獲得“ Hello”。
if ( msg == "Hello" ):
print("Hii everyone")
else:
print("Go away")
在您編寫的Java代碼中
dout.writeUTF("Hello");
但是Python服務器希望“ Hello Server”打印“ Hii Everyone”。
將Java客戶端代碼更改為
dout.writeUTF("Hello Server");
因為您從服務器端獲取的字符串的開頭有2個隱藏字符,所以在比較之前必須刪除這2個字符。
if ( msg[2:] == "Hello" ):
只需使用正確的語法即可。 由於您發送的是“ Hello”,因此“ Go away”將是您的輸出。
if ( msg == "Hello Server" ):
print("Hii everyone")
else:
print("Go away")
問題是您必須在Python服務器中指定解密UTF-8 ,然后dout.writeBytes("Hello Server")
在Java客戶端中使用dout.writeBytes("Hello Server")
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.