利用socket实现python和java通信

Socket 通信机制详解 阅读详情

python服务端

import socket
import threading
import json


def main():
    # 创建服务器套接字
    serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 获取本地主机名称
    host = "127.0.0.1"
    # 设置一个端口
    port = 12345
    # 将套接字与本地主机和端口绑定
    serversocket.bind((host, port))
    # 设置监听最大连接数
    serversocket.listen(10)
    conent = "hello "
    print("等待连接")
    while True:
        # 获取一个客户端连接
        clientsocket, addr = serversocket.accept()
        print("连接地址:%s" % str(addr))
        try:
            t = ServerThreading(model, clientsocket)  # 为每一个请求开启一个处理线程
            t.start()
        except Exception as identifier:
            print(identifier)
        pass
    serversocket.close()
    pass


class ServerThreading(threading.Thread):
    def __init__(self, model, clientsocket, recvsize=1024 * 1024, encoding="utf-8"):
        threading.Thread.__init__(self)
        self.model = model
        self._socket = clientsocket
        self._recvsize = recvsize
        self._encoding = encoding
        pass

    def run(self):
        print("开启线程.....")
        try:
            # 接受数据
            msg = ''
            while True:
                # 读取recvsize个字节
                rec = self._socket.recv(self._recvsize)
                # 解码
                msg += rec.decode(self._encoding)
                # 文本接受是否完毕,因为python socket不能自己判断接收数据是否完毕,
                # 所以需要自定义协议标志数据接受完毕
                if msg.strip().endswith('over'):
                    msg = msg[:-4]
                    break
            # 解析json格式的数据
            sendmsg = json.dumps(msg)
            print(sendmsg)
            # 发送数据
            self._socket.send(("%s" % sendmsg).encode(self._encoding))

        except Exception as identifier:
            self._socket.send("500".encode(self._encoding))
            print(identifier)
            pass
        finally:
            self._socket.close()
        print("任务结束.....")


if __name__ == "__main__":
    main()

java 客户端


package ww.learn;

import java.io.*;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

public class test_client {
    private final String HOST = "127.0.0.1";
    private final int PORT = 12345;

    public List<Float> remoteCall(String path){
        // 访问服务进程的套接字
//        System.out.println("调用远程接口:host=>"+HOST+",port=>"+PORT);
        try(Socket socket = new Socket(HOST, PORT)) {
            // 初始化套接字,设置访问服务的主机和进程端口号,HOST是访问python进程的主机名称,可以是IP地址或者域名,PORT是python进程绑定的端口号
            // 获取输出流对象
            OutputStream os = socket.getOutputStream();
            PrintStream out = new PrintStream(os);
            // 发送内容
            out.print(path);
            // 告诉服务进程,内容发送完毕,可以开始处理
            out.print("over");


            // 获取服务进程的输入流
            InputStream is = socket.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is,"utf-8"));
            String tmp = null;
            StringBuilder sb = new StringBuilder();
            // 读取内容
            while((tmp=br.readLine())!=null)
                sb.append(tmp).append('\n');
            // 解析结果
            tmp = sb.toString().substring(1, sb.length()-2);
            String[] split = tmp.split(",");
            List<Float> list = new ArrayList<Float>(split.length);
            for (int i = 0; i < split.length; i++) {
                list.add(Float.valueOf(split[i]));
                split[i] = null;
            }
//            System.out.println(list);
//            System.out.println(list.size());
            return list;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) throws IOException {
        test_client test_client = new test_client();
        List<Float> feature = test_client.remoteCall("1.jpeg");
        System.out.println(feature);

    }

}


Java后端同第三方服务建立Socket通信①Python编写脚本模拟第三方服务(基础版) 本篇主要介绍采用Python编写脚本模拟一个简单第三方服务的方法。后续将介绍Java后端作为Client如何链接到第三方服务(Server)并发送请求及处理响应,以及前后端如何建立一个Websocket实现前端(客户端)和后端(服务器)之间的数据交换。 阅读详情

相关推荐

分布式信息处理的计算机编程要素

在分布式系统中,多台计算机协同工作,共同完成任务,以提高处理能力、可靠性和可扩展性。为了实现有效的分布式信息处理,需要利用计算机编程中的几个要素。本文将介绍分布式信息处理的要素,并提供一些示例源代码。通过利用网络通信、并发和并行编程、分布式数据存储和分布式任务处理等计算机编程要素,可以有效地实现分布式信息处理。以上示例代码提供了一些在分布式系统中常用的编程技术和工具的示例,但实际应用中可能需要根据具体情况选择适合的编程语言、框架和库来实现分布式信息处理。

CodeNexus的博客 120

Java与Python通过socket通信,进行大数据传输

Java与Python通过socket通信,进行大数据传输

holiey的博客 925

Python与Java间Socket通信实例代码

主要介绍了Python与Java间Socket通信实例代码的相关资料,需要的朋友可以参考下

Python和Java跨语言socket通信

python socket 服务端 import socket s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)# 套接字类型AF_INET, socket.SOCK_STREAM tcp协议,基于流式的协议 s.bind(('127.0.0.1', 8080)) s.listen(1) # 最多可以连接多少个客户端 output = '我是服务端' while 1: print('服务器正在接受...') # 阻塞等待,创建连

Darlewo 1165

STM32CubeIDE无法连接STLinkV2的一个可能原因

前些日子买了个新的STLINKV2 , ( 老的被我家猫猫一泡尿送上西天了)刚开始还挺正常的, 后来有一天就突然间发现无法调试了.网上尝试了各种方法, 各种操作. 百度了好久. 最后好在我自己研究出来了.我使用的是 STM32CubeIDE 这个开发工具调试选项如下图其它的不需要修改, 然后点击下面的apply 按钮, 然后调试Debug, 提示 No STLink 如下图后来尝试了下载ST-LINK Utility 用它是可以正常连接STLink的, 然后也能正常进行升级操作.

走错路的程序员 9829

Unity中5分钟实现3D高斯泼溅渲染:从原理到实战部署

3D高斯泼溅(3D Gaussian Splatting)是一种新兴的神经渲染技术,它通过显式地使用大量3D高斯椭球来表示场景,革新了传统的体渲染和神经辐射场(NeRF)方法。其核心原理是将这些3D高斯投影到2D屏幕并进行快速光栅化与Alpha混合,从而绕过了耗时的光线步进,实现了极高的渲染效率。这项技术的价值在于,它能够在消费级GPU上达到实时甚至超实时的帧率,同时保持紧凑的数据表达和惊人的视觉细节,极大地降低了高质量3D重建与渲染的门槛。在应用场景上,它正快速渗透到数字孪生、虚拟现实、文化遗产数字化以及

weixin_29474431的博客 274

简单的java和python的socket通信,长连接

因为一些运算要使用到python的模型和算法,python需要和java端建立长连接。这里是一个简单的demo实现: java服务器: public class testSocket{ public static void main(String args[])throws Exception { ServerSocket serverSocket = new ServerSocket(9999); System.out.println("服务启动");

m0_55505998的博客 2855

AURIX-TC3xx-GTM详解六-DPLL(Digital PLL Module)-寄存器1-DPLL寄存器

主要有下图这些寄存器2、

m0_69929716的博客 440

JAVA 和 Python之间Socket通信

本来是用Java做一个在线编程功能,这里需要用到socket接收和发送数据,当我做好Python在线变成,正做Java的时候问题来了,因为Java是将整个代码事先编译运行,而不是那种足行执行,而我在线编程要求的是先将Java编译成class文件,然后执行,而我使用Java做socket服务端的时候它执行的时候会生成.class文件,而它本身却检测不到当前目录下有.class文件,因为它事先已经编译...

u014226080的博客 4672

COMSOL报错调试总结(不定期更新)

COMSOL报错调试总结1. 可定位错误1.1 除零错误1.2 未定义变量值1.3 边界条件/材料属性等缺失2. 难定位错误2.1. 装配期间内存不足 官方给的案例总是非常完美,运行流畅,结果完美。但是自己做模型时候就总是报错,而且不像自己coding的程序那样可以明确定位哪里出了bug。这里把我碰到的一些报错问题以及调试方法记录下来~ 部分来源于以下参考来源: http://wap.sciencenet.cn/blog-1467490-1118453.html?mobile=1 1. 可定位错误 以下错误

jessica0307的博客 8万+

S32K314 EB配置MCAL全模块讲解【Autosar——1 MCU模块详解】持续更新中

FIRC(fast internal RC Oscillator) :高速内部时钟,固定48MHZ;SIRC(Slow Internal RC Oscillator):低速内部时钟,固定32KHZ;FXOSC(Fast Crystal Oscillator Digital Controller):高速外部晶振(8-40MHZ),根据原理图选型进行配置;SXOSC():外部低速外部时钟,固定输入32.768KHZ;PLL_PHIn_CLK:时钟倍频锁相环时钟范围(640-1280MHZ);

qq_40488886的博客 1782

python黑客库文件_python黑客代码的搜索结果-阿里云开发者社区

【网络编程5】Java与Python套接字Socket通信的例子今天看一本Python黑客相关的书的第一章部分,边看边在Linux Ubuntu Kylin 32位系统的终端打Python代码,就基本会用Python语言了,包括socket内容。刚好我之前学习Java Socket通信,今天就试着用Python写客户端,并与Java服务器端通信,经过一些调试,最后成功了。Github根链接是:ht...

weixin_39541750的博客 149

城市仿真软件:AnyLogic_(8).行人与人群动态仿真

定义行人个体的行为和属性,如行走速度、目标位置等。// 创建一个行人// 设置行走速度为1.5 m/s// 设置目标位置为入口// 创建另一个行人// 设置行走速度为1.2 m/s// 设置目标位置为出口// 创建行人// 创建乘客行人与人群动态仿真在城市规划、交通管理和紧急疏散等领域具有广泛的应用。通过AnyLogic提供的行人模型模块,可以有效地模拟行人的个体行为、群体动态和与环境的交互。

kkchenjj的博客 1250

java-python 多线程,多个客户端之间发送文件-2.python server java client

java通过利用TCP,Socket和ServerSocket的类,进行消息的传递,。通过while(true),形成点对点的单次通信。不过必须得等待对方的回复,才可以进行下一步。 之后利用多线程,实现刷屏多次聊天。 利用这一点思路,将输入的字符串转化成文件。来进行文件的传递,以及多用户发送。 package tcom.tcp.test; import java.i...

qq_17524035的博客 1413

某瓜数据app 获取达人直播商品信息接口 Sign

某瓜数据app 获取达人直播商品列表接口 Sign

自成背后的博客 6039

宇树G1开发实践--PPT汇报(基础版)

本文介绍了一套基于宇树G1人形机器人的PPT自动演示系统,可实现"一键启动、自动演讲"功能。系统通过多线程同步技术,将音频播放与机器人动作完美结合,支持12种预设社交互动动作。硬件依赖宇树G1机器人、外接音响和网络连接,软件采用Python SDK和ALSA音频工具。核心功能包括音频文件自动排序、外接音响播放控制、机器人动作执行及音画同步。使用时需配置网络接口和音频设备号,运行后自动按顺序播放音频并执行随机动作。系统特别强调了安全注意事项,并提供了常见问题解决方案,适用于展会、汇报等需要

m0_47999117的博客 510

大文件断点上传服务开发--Java服务端Python客户端

目标:文件断点上传,Java编写服务端,Python编写客户端,以容器方式部署环境:IntelliJ IDEA / Linux (python)步骤:概述-&gt;文件断点上传服务端设计与实现-&gt;文件断点上传客户端设计与实现-&gt;kubernetes部署服务-&gt;运行测试1.概述文件断点上传服务的主要功能为实现应用的文件中转,并在大文件传输中断后可以进行断点上传。文件服务端以容器方式...

xingyuzhe的博客 867

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Android studio 客户端(将拍摄的图片进行上传)与python服务器进行socket通信

目录 1、客户端 1.1、app进行拍照 1.2、将拍摄的照片进行显示 1.3、将拍摄的照片进行上传(socket) 1.4、遇到的问题 2、服务器 2.1、socket通信 3、参考博客 1、客户端 Android studio app开发 1.1、app进行拍照 1.2、将拍摄的照片进行显示 1.3、将拍摄的照片进行上传(socket) 1.4、遇到的问题 2、服务器 python socket 通信 2.1、socket通信 3、参考博客 ......

牧子川的博客 4716

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java与python交互_Java与Python

有这么一个命题,就是说后端算法部门,使用了TensorFlow等机器学习算法进行了数据预测,现在有个需求,就是说要通过浏览器页面输入相关的计算参数,然后返回计算结果,理论上呢,python也可以作为一个web服务器来开发,但是算法部门的同事不会相关的技术。我后台语言使用的是java,那么如何通过java调用python进行计算呢?或者说,如何把python web集成到java的微服务框架中呢?p...

weixin_31106267的博客 4265

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Apache Arrow跨语言数据共享:Python与Java无缝协作

在数据处理工作流中,你是否经常遇到Python数据分析脚本与Java后端服务之间数据传输缓慢、格式转换复杂的问题?Apache Arrow作为多语言数据工具箱,通过统一的列式内存格式和高效的IPC协议,彻底解决了跨语言数据共享的性能瓶颈。本文将带你实操Python与Java之间的无缝数据协作,掌握零拷贝数据传输的核心技巧。 ## 为什么选择Apache Arrow实现跨语言协作 Apache ...

gitblog_01172的博客 876

java调用bat文件踩坑

想法:使用java编写web应用,使用人脸识别的功能。一开始想到利用java调用python文件即可,中途遇到切换anaconda的python环境问题,特此记录。查资料过程中,发现利用socket通信,让java和python交互可能更加好使,之后有机会再搞。 同时,还有一些疑惑,如果直接在cmd调用python的文件,会爆出很多TensorFlow的版本警告问题,但是java控制台却并没有输出警告信息! package com.lan.facenet; import org.junit.jupite

weixin_42587475的博客 396

从零开始学Python

第十二章:通信,web 1.浅谈通信 毫无疑问要用到socket(套接字)由于此章节和java异曲同工,就不再繁复地赘述,简单地运用几个例子来说明。 一个小型服务器和一个小型客户机: 服务器: &gt;&gt;import socket &gt;&gt;s=socket.socket() &gt;&gt;host=socket.gethostname()...

Keifor的博客 262

使用socket通信,java调用python预测算法

使用socket通信,java调用python预测算法项目需求1.定IP和端口号2.java向客户端(python)发送消息3.python客户端收到消息解析(1)定ip和端口号,一定和服务器端(java)保持一致(2)python客户端解析java服务器端发来的消息(3)python客户端向java服务器端发送预测出的结果3.java服务器端接收python客户端的预测结果 项目需求 我们的项目主要是做到前端上传文件,后端解析文件,把解析出的值给python运用深度学习的预测算法,预测出结果返给前端页面展

weixin_44452346的博客 1372

php怎么使用Ice RPC通信_php如何实现跨语言微服务远程调用

Ice RPC 在 PHP 中不原生支持,得用 C++/Python/Java 做桥接PHP 官方没有维护 Ice 的原生扩展,pecl install ice 早已下线,GitHub 上的第三方 ice-php 扩展也多年未更新,不兼容 PHP 8+,编译失败是常态。必须绕过 Slice 编译器生成桩代码Ice 要求先写 .ice 接口定义,再用 slice2php 生成客户端类——但这个工具从 Ice 3.7 开始就不再输出 PHP 代码,官方明确弃用。

weixin_42206435的博客 117

网络编程之--socket实现python和java通信

最近因为项目需求,要求能在python和java之间传输数据,所以了解了一下socket,通过使用socket在两种语言之间传输数据。期间遇见了不少坑,记录一下,算是给后来人一个借鉴(说起来都是泪啊 。。。。。) 1. 先说一下我要干什么,我通过base64编码将图片从前端传到了服务器(java写的网站),然后需要把图片数据传输到python中实现一些功能。其中使用python作为服务端,ja...

日月 1万+

基于Python的socket库实现通信功能

这是一篇介绍使用python的socket库实现通信功能的文章.系统主要分为客户端和服务端。这里简单的给每个客户端增加一个不重复的uid,客户端之间可以根据这个uid选择进行广播通信,即与所有在线的客户端通信。也可以选择与单一客户端通信。

一只程序猿子的博客 5389
上一篇: resnet提取图片特征
下一篇: python图片去重
vive921
博客等级 码龄8年 10粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值