[英]Java client python server socket programming
I have a client program in java that sends a message "Hello" to python server. 我在Java中有一个客户端程序,该程序将消息“ Hello”发送到python服务器。
Java code 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 server code 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")
the problem is that java client is able to send a Hello message to the python server but in python side else statement always executes with output " Go away". 问题是Java客户端能够将Hello消息发送到python服务器,但是在python端,else语句始终执行,输出为“ Go away”。
python version 2.7
Output: 输出:
('Got connection from', ('127.0.0.1', 25214))
Hello
Go away
you are getting 'Hello' from client. 您正在从客户端获得“ Hello”。
if ( msg == "Hello" ):
print("Hii everyone")
else:
print("Go away")
In the Java code you have written 在您编写的Java代码中
dout.writeUTF("Hello");
But the Python server expects "Hello Server" to print "Hii Everyone". 但是Python服务器希望“ Hello Server”打印“ Hii Everyone”。
Change Java Client code to 将Java客户端代码更改为
dout.writeUTF("Hello Server");
因为您从服务器端获取的字符串的开头有2个隐藏字符,所以在比较之前必须删除这2个字符。
if ( msg[2:] == "Hello" ):
Just Use proper syntax. 只需使用正确的语法即可。 Since you are sending "Hello", "Go away" will be your output.
由于您发送的是“ 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.