java socket定时发送请求 python socket 实时回传 算法模型识别结果

功能:python 作为服务端代码需要一直保存等待连接状态,即使与客户端断开连接也不能退出。Java作为客户端需要在需要的时间进行连接,不需要的时间断开,本文中显示的定时发送数据给服务端,服务端接收数据后将数据喂入算法模型得到结果,然后再将结果回传客户端。在客户端连接服务端后,需要保持长连接状态。
废话不多说,直接上代码:
python 作为服务端

from socket import *
import numpy as np
BUFSIZ = 1024
ADDR = ("192.168.137.1", 9999)  # 主机ip  软件端口号
SIZE = 10
tcpS = socket(AF_INET, SOCK_STREAM)  # 创建socket对象
# tcpS.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)  # 加入socket配置,重用ip和端口
tcpS.bind(ADDR)  # 绑定ip端口号
tcpS.listen(SIZE)  # 设置最大链接数
while True:
    s =1
    while True:
        '''链接循环'''
        conn, addr = tcpS.accept()
        print('链接人的信息:', addr)
        order = conn.recv(1)
        order_number = str(order, 'UTF-8')
        print(order_number)
        if order_number == "1":
            order2 = conn.recv(1)
            order_number2 = str(order2, 'UTF-8')
            print(order_number2)
            s = ""
            while True:
                order3 = conn.recv(1024)
                if not order3:
                    break
                order_number3 = str(order3, 'UTF-8')
                s += order_number3
            print("接收数据为",s)
            import recognize    #自己训练模型,识别返回结果的函数。放在这是因为每次识别都需要重新加载模型,不然再次输入数据就会报错
            data = np.random.random((1, 1, 200, 8))  # todo 数据接入口
            recognize = recognize.get_recognize(data)  # todo 喂入模型,得到识别结果
            conn.send(recognize.encode("UTF-8"))
            conn.close()
    tcpS.close()

java客户端 

import java.io.*;
import java.net.Socket;

public class SocketClient {

    public static void main(String args[]) throws Exception {

        InputStreamReader isr;
        BufferedReader br;
        // 要连接的服务端IP地址和端口
        String host = "192.168.137.1";
        int port = 9999;
        String order = "1" ;
        String message = "2eeee";


        //与服务端建立连接

        // 获取输出流
        while (true){
            Socket socket = new Socket(host, port);
           Thread.sleep(1000*2);
            OutputStream outputStream = socket.getOutputStream();
            PrintWriter pWriter = new PrintWriter(outputStream);
            pWriter.write(order+message);
            pWriter.flush();
            //通过shutdownOutput高速服务器已经发送完数据,后续只能接受数据
            socket.shutdownOutput();

            // 获得输入流

            isr = new InputStreamReader(socket.getInputStream());
            br = new BufferedReader(isr);
            System.out.println(br.readLine());
            }};

 

 

 

运行之后的结果是:

python端

Java 端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值