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()

运行结果大概就是这样的
在这里插入图片描述

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值