java与c/c++进行socket通信的一些问题(2)

Python、/C/C++ Socket编程实例 Socket: socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。  在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的 阅读详情

第一部分请见http://blog.youkuaiyun.com/kingfish/archive/2005/03/29/333635.aspx

本部分提出另外一种做法, 供参考。


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

/**
 * 与C语言通信(java做Client,c/c++做Server,传送一个结构)
 * @author kingfish
 * @version 1.0
 */
public class Employee2 {
  private String name;
  private int id;
  private float salary;

  /**
   * 将int转为低字节在前,高字节在后的int
   */
  private static int toLH(int in) {
    int out = 0;
    out = (in & 0xff) << 24;
    out |= (in & 0xff00) << 8;
    out |= (in & 0xff0000) >> 8;
    out |= (in & 0xff000000) >> 24;
    return out;
  }

  /**
   * 将float转为低字节在前,高字节在后的int
   */
  private static int toLH(float f) {
    return toLH(Float.floatToRawIntBits(f));
  }

  /**
   * 构造并转换
   */
  public Employee2(String name, int id, float salary) {
    this.name = name;
    this.id = id;
    this.salary = salary;
  }

  /**
   * 取得名字,定长byte数组
   */
  public byte[] getName() {
    byte[] b = new byte[20];
    System.arraycopy(name.getBytes(), 0, b, 0, name.getBytes().length);
    return b;
  }

  /**
   * 取得编号(低字节在前)
   */
  public int getId() {
    return toLH(id);
  }

  /**
   * 取得工资(低字节在前)
   */
  public int getSalary() {
    return toLH(salary);
  }

  /**
   * 发送测试
   */
  public static void main(String[] args) {
    try {
      Employee2 p = new Employee2("kingfish", 123456789, 8888.99f);

      Socket sock = new Socket("127.0.0.1", 8888);
      DataOutputStream dos = new DataOutputStream(sock.getOutputStream());
      dos.write(p.getName());
      dos.writeInt(p.getId());
      dos.writeInt(p.getSalary());

      sock.close();
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }
} //end

-----------------------------------------------------------------------------------------------------

如有任何问题,请指正!

kingfish
2005.3.30

车载与安防项目实战:如何用RK3588搭配NVP6158C实现4路AHD摄像头BT1120接入与同步预览 本文详细解析了基于RK3588处理器与NVP6158C解码芯片实现4路AHD摄像头BT1120接入与同步预览的技术方案。针对车载环视和安防监控场景,重点探讨了硬件架构设计、BT1120接口配置、多路同步机制及Android HAL适配等核心问题,提供了从底层驱动到上层应用的完整实现路径,为相关领域的工程实践提供可靠参考。 阅读详情

相关推荐

LPDDR5/5X BG mode,8B mode和16B mode

LPDDR5/5X 器件,协议上支持多个bank架构可静态配置;配置在MR3:模式说明协议要求速率要求BLBG模式每CH 4BG, 4BALPDDR5/5X>3200MbpsBL16 & 328B模式每CH 8BALPDDR5任何速率BL3216B模式每CH 16BALPDDR5/5X<=3200MbpsBL16 & 32。

hemlok的博客 8865

Socket介绍及使用Java实现socket通信

使用Java实现socket通信。

weixin_49561506的博客 2万+

PaddleOCR实战:从零开始打造专属OCR模型的完整指南

本文提供了一份从零开始使用PaddleOCR打造专属OCR模型的完整实战指南。内容涵盖环境搭建、数据标注与准备、模型训练与调优,以及最终的模型转换与部署。重点介绍了如何利用PaddleOCR进行模型训练,并整合PPOCRLabel等工具高效准备数据集,帮助开发者快速构建适用于特定场景的高精度OCR识别能力。

rl6adventurer的博客 733

java与C语言socket通信(C客户端java服务端)

服务器端代码 MyServer.java import java.io.*; import java.net.*; import java.util.*; public class MyServer { public static void main(String[] args) throws IOException{ ServerSocket server=new ServerSocket(5678); while(true){ Socket client=server.ac

u014630142的博客 1284

手把手教你用mitmproxy抓包抖音数据流(附Python脚本模板)

本文详细介绍了如何使用mitmproxy抓包抖音数据流,包括环境搭建、证书安装和Python脚本模板。从mitmproxy配置到抖音API解析,提供完整的移动端数据流分析方案,帮助开发者快速掌握数据抓取技术,适用于应用优化、竞品分析和安全审计等场景。

weixin_33670786的博客 308

Microsoft AI SDK 与 SAP ABAP:让企业级 AI 能力触手可及的深度整合指南

借助 Microsoft AI SDK,ABAP 开发者无需跳出熟悉的事务码与数据字典,就能把 GPT‑4 的强大语言理解与生成能力深度植入采购、销售、财务等核心业务流程。只要掌握“初始化 SDK → 构造 Prompt → 解析输出”这一范式,未来无论 Azure OpenAI、OpenAI 还是本地化 LLM,都能在同一套代码骨架内快速切换,实现真正的“AI 即服务”。现在,就让我们在下一行 ABAP 里拥抱智能未来。参考链接均于 2025‑07‑22 提取,推荐读者结合实际版本进一步验证。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 433

利用socket实现C和java通信

由于项目需求,需要后端的java和Linux C进行通信,在此用socket本机通信的方式来实现,并将调试过可以通信的例程代码贴过来,其中大部分代码是通过网络获取的,自己经过了简单的调试。首先C程序作为服务器端,java作为客户端,实现的功能为:java客户端向C语言服务器端发送字符串,服务器端收到后把收到的字符串原封不动的发回客户端,客户端接收后再终端显示,如果java客户端发送"ip"字段,服务器端回复"1.1.1.1"的ip地址到Java客户端。Java客户端代码(test1.java)

qq_39740416的博客 1231

BevFusion (5):逐行代码详解

论文中给出了Bevfusion的架构图,它的输入是多视角的相机和点云图,经过两个特定的head,分别用于做检测任务和分割任务。图1 Bevfusion 结构图Bevfusion因为有两个模态的输入:多视角相机和点云,所以对应两个分支:相机分支和点云分支。相机分支:输入6个视角的图片后,提取特征,然后经VT(View Transformer)转换之后得到相机的Bev特征。激光雷达分支:输入点云数据,经过Encoder编码得到体素化Lidar特征,然后沿z方向展平,得到Lidar Bev特征。

@bangbang的博客 3715

java中socket编程什么场景会使用

同时,Java中提供了丰富的网络编程API,例如Socket、ServerSocket、DatagramSocket等类,可以满足不同的网络编程需求。另外,Java中的网络编程API支持多线程编程,可以实现高并发的网络应用程序。因此,Java中的Socket编程在网络编程中具有广泛的应用场景。Java中的Socket编程主要应用于网络编程,可以用于开发各种网络应用程序,例如基于TCP协议的客户端/服务器应用、基于UDP协议的数据报传输应用、基于HTTP协议的Web应用等。

记录,交流,共同进步 458

基于 YOLOv26 的陶瓷产品缺陷检测系统:智能视觉质检方案

本文提出了一种基于YOLOv26深度学习模型的陶瓷产品智能缺陷检测系统。该系统针对陶瓷生产中的裂纹、气泡、釉面缺陷等8类常见质量问题,采用YOLOv26目标检测算法实现高精度自动化检测。系统架构包含数据采集、预处理、YOLOv26检测和后处理四个模块,具有多类别分类、实时推理和强鲁棒性等技术优势。文章详细介绍了数据预处理与增强方法,并提供了Python代码实现示例。该方案可显著提升陶瓷产品质量检测效率,替代传统人工检测方式,为陶瓷制造业提供智能化质检解决方案。

一键难忘的博客 789

2024年数字IC秋招-华为机试-数字芯片-实习笔试题

笔试题目:40个选择题A.综合时不同文件列表内的宏定义仅在本列表生效B.宏定义会覆盖,不需要单独undefC.仿真时出现宏定义冲突以最后一次值为准D.宏定义最好在各文件中随用随定义A.4/9B.4/6C.01D.0/6。

qq_42135020的博客 2892

Java(Android)与C++之间的Socket通信

Java与C++之间的Socket通信,对于小的数据量和控制命令,直接可以封装成json或xml格式,进行传输。但对于文件等大数据量传输,必须要将文件封装成帧,每一帧都设定固定大小的缓冲区,逐帧传输。此时json和xml便不再适用了。 在此过程中要需解决如下问题: 1.    Java和C++数据基本类型不同,不仅所占字节数不同(如long型,java占8bytes,C++一般为4bytes)

张坤xfiction的专栏 8617

VMware报错系列:虚拟机配置文件(.vmx)损坏或丢失---修复

虚拟机配置文件(.vmx)损坏或丢失---修复

weixin_54626591的博客 7012

c java tcp 通讯问题,java与c/c++进行socket通信的一些问题(2)-JSP教程,Java技巧及代码...

本部分提出另外一种做法, 供参考。import java.net.*;import java.io.*;/*** 与c语言通信(java做client,c/c++做server,传送一个结构)* @author kingfish* @version 1.0*/public class employee2 {private string name;private int id;private flo...

weixin_28890831的博客 277

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

java与c/c++进行socket通信的一些问题(1)

近几天看到csdn上问c/c++和java通信的问题比较多,特别是c特有的数据结构(如struct)。特地根据网友的一个问题举个例子,希望对初学者有所帮助。原问题见:http://community.youkuaiyun.com/Expert/topic/3886/3886989.xml?temp=.3527033这类问题通常是为了利用原有Server或者Server不能做修改(通常是c/c++)造成。比如S

kingfish的专栏 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

java下的socket通信与C/C++下的socket通信

JAVA下的socket通信: 关键点: 由Socket对象得到输入流(即由另一方发过来的数据),此时构造BufferedReader对象 由Socket对象得到输出流(即发往另一方的数据),此时构造PrintWriter对象 客户端: public class Client { public static void main(String[] args) throws

成年老猿的专栏 805

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

java与c/c++进行socket通信

比如Server端只接收一个结构Employee,定义如下: struct UserInfo {   char UserName[20];   int UserId; }; struct Employee {   UserInfo user;   float salary; }; 当然也可以定义为 struct Employee {   char name[20];

yinxianluo的专栏 3071

java与c/c++进行socket通信的一些问题

c/c++和java通信的问题比较多,特别是c特有的数据结构(如struct)。 特地根据网友的一个问题举个例子,希望对初学者有所帮助。 这类问题通常是为了利用原有Server或者Server不能做修改(通常是c/c++)造成。 比如Server端只接收一个结构Employee,定义如下: struct UserInfo { char UserName[20]; int Use

如果可以,我愿争取 1444

Java与C之间的socket通信

最近正在开发一个基于指纹的音乐检索应用,算法部分已经完成,所以尝试做一个Android App。Android与服务器通信通常采用HTTP通信方式和Socket通信方式。由于对web服务器编程了解较少,而且后台服务器已经采用原始socket实现与c客户端通信,这就要求Android客户端也采用socket实现。所以在开发Android app时采用了原始socket进行编程。 由于算法是用C语言

姚光超的专栏 4万+

java c socket通信 中文乱码解决

前言(扯淡) 作为一个一直从事Java的人来说,突然做C++很多地方都是乱撞墙,就发送的这个乱码就让人感到十分头秃,昨天跟老板对话,老板说不行咱就花钱找别人做。。。能力别质疑的感觉真是让人糟心啊- - 不扯太多,程序员节快乐,大家一起头秃吧。。虽然我并不想秃。 问题 言归正传,c++接收信息是gb2312,Java发数据是UTF-8,我Java接收数据没有问题,但是发给C++就遇到乱码问题...

shenshaoming的博客 2万+

C/C++ 给 Java 通过Socket传输int问题

C/C++ 给 Java 通过Socket传输int问题引言int高低位乱序解决 引言 事情是这样的,朋友有个软件,但是是单机版本,他想实时向服务器传输生成出来的报告,算是服务器那边有个备份。 我先看了一下,软件是C/C++的,CRT也是版本齐全,而且那台电脑也不允许装什么其他环境了,我很自然的就用C/C++写了,而服务端使用JAVA写的,因为服务器那边本来就装了JAVA环境,但没有10以上版本的CRT,所以我就用了2个不同语言写了。 int高低位乱序 如果两边同时使用c/c++写,那么不会出现这个问题,因

Doub1's Blog 1311

c java tcp 通讯问题,java与c/c++进行socket通信的一些问题(

本部分提出另外一种做法, 供参考。import java.net.*;import java.io.*;http://www.gaodaima.com/41015.htmljava与c/c++进行socket通信的一些问题(/*** 与c语言通信(java做Client,c/c++做Server,传送一个结构)* @author kingfish* @version 1.0*/public cla...

weixin_28869127的博客 240

java socket 与linux c通信问题

<br />java socket 与linux c通信问题<br />97w211 发表于: 2010-2-09 18:08 来源: 科技复兴 <br />如题,用java做客户端,linux的c程序做服务器端。目前客户端向服务器端发送信息已经没问题,但是在添加服务器端向客户端发送信息的功能时却出现了死循环。在Eclipse调试了一下客户端发现是在in.readLine()卡住了,具体代码如下: <br />java 客户端: <br />Java code <br />package linux;<br

hx_mraku的专栏 1671
上一篇: java与c/c++进行socket通信的一些问题(1)
下一篇: java中动态执行一段代码
kingfish
博客等级 码龄26年 237粉丝 17原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值