JAVA 和 Python之间Socket通信

本来是用Java做一个在线编程功能,这里需要用到socket接收和发送数据,当我做好Python在线变成,正做Java的时候问题来了,因为Java是将整个代码事先编译运行,而不是那种足行执行,而我在线编程要求的是先将Java编译成class文件,然后执行,而我使用Java做socket服务端的时候它执行的时候会生成.class文件,而它本身却检测不到当前目录下有.class文件,因为它事先已经编译好了,已经得到了结果,所以这时就尴尬了,我纠结了很久,查阅很多资料也没办法(应该是我太菜)
所以最后我选择用Python做服务端,因为它是逐行执行的,而且简单(主要还是我不会C语言那些),那么代码也很简单,这里值得注意的是因为各个语言之间的差别,所以我们必须使用字节码进行传输,具体的不用我多说大家也都懂为什么吧,就直接上代码
Java客户端

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class Main {
    public static void main(String[] args){
        Socket socket = null;
        String Code_Adress = "127.0.0.1";
        try {
            socket = new Socket(Code_Adress,9007);
            OutputStream outputStream = socket.getOutputStream();
            InputStream inputStream = socket.getInputStream();
            byte[] bytes = new byte[1024];
            outputStream.write("我是JAVA客户端".getBytes());
            int len = inputStream.read(bytes);
            String str = new String(bytes,0,len);
            System.out.println(str);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Python服务端

import socketserver

class myTCPhandler(socketserver.BaseRequestHandler):
    def handle(self):
        while True:
            self.data = self.request.recv(1024).decode('UTF-8', 'ignore').strip()
            if not self.data : break
            print(self.data)
            self.feedback_data =("回复\""+self.data+"\":\n\t你好,我是Server端").encode("utf8")
            print("发送成功")
            self.request.sendall(self.feedback_data)

host = '127.0.0.1'
port = 9007
server = socketserver.
ThreadingTCPServer((host,port),myTCPhandler)
server.serve_forever()

运行结果大概就是这样的
JAVA 和 Python之间Socket通信_第1张图片

你可能感兴趣的:(python学习,springboot)