[其他]JAVA与C#的Socket通信
在日常的开发中,不同的传感器支持的开发语言常常是不同的。例如Kinect一般是用C++开发的,Leapmotion用JAVA开发比较多。
去年暑假(17年暑假)做的一个项目是:用Leapmotion捕捉人手的五个手指关节信息,然后经过变换,传输给一个同样具有五个手指的机械手。
一开始拿到的开发框架,Leapmotion是用JAVA开发的;机械手AR10是用C#开发。
于是分别通过编程实现,使得JAVA端能够使Leapmotion捕捉人手五个手指10个关节的信息并保存为文本文件;
C#端能够使AR10读取文本文件,转化为各个关节的位置指令,实现同样的动作指令。
然而这样只能做到离线控制,需要通过Socket通信,实现数据的实时传输,才能实现控制。
JAVA端添加的代码:
在一开始添加库:
import java.net.ServerSocket;
import java.net.Socket;
在类里面添加(其中tmp是需要不断被实时发送的数据):
tmp = angleThumb12+" "+angleThumb23+" "+angleIndex01+" "+angleIndex12+" "+angleMiddle01+" "+angleMiddle12+" "+angleRing01+" "+angleRing12+" "+anglePinky01+" "+anglePinky12+" "+"\n";System.out.println("Java Sockets Program has started."); int i=0; try { DatagramSocket socket = new DatagramSocket();System.out.println("Sending the udp socket...");// Send the Message "HI"socket.send(toDatagram("",InetAddress.getByName("127.0.0.1"),3800));//while (true) { System.out.println(tmp);System.out.println("Sending hi " + i);Thread.currentThread();Thread.sleep(10);socket.send(toDatagram(String.valueOf(tmp),InetAddress.getByName("127.0.0.1"),3800));i++;} catch (Exception e) {e.printStackTrace();}
C#端添加的代码
添加包含头文件:
using System.Net;
using System.Net.Sockets;
在C#制作的GUI界面中需要触发接收数据的按钮下,例如
private void button1_Click(object sender, EventArgs e)
{
}
里面添加:
private void button1_Click(object sender, EventArgs e){string returnData;byte[] receiveBytes;//ConsoleKeyInfo cki = new ConsoleKeyInfo();using (UdpClient udpClient =new UdpClient(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 3800))){IPEndPoint remoteIpEndPoint =new IPEndPoint(IPAddress.Parse("127.0.0.1"), 3800);while (true){receiveBytes = udpClient.Receive(ref remoteIpEndPoint);returnData = Encoding.ASCII.GetString(receiveBytes);textBox1.AppendText(returnData + Environment.NewLine);//Console.WriteLine(returnData);float angle1 = 0;float angle2 = 0;float angle3 = 0;float a0 = 0;float a1 = 0;float a2 = 0;float a3 = 0;float a4 = 0;float a5 = 0;float a6 = 0;float a7 = 0;float a8 = 0;float a9 = 0;int k = 0;string[] arr = new string[10];arr = returnData.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);foreach (string i in arr){mainTextBox.AppendText("target: " + k + "s" + i + "s" + Environment.NewLine); if (k == 1){angle1 = Convert.ToSingle(i);angle2 = angle1 * (-20) + 2219;if (angle2 < 1621){angle2 = 1621;}if (angle2 > 2000){angle2 = 2000;}angle3 = angle2 * 4;a1 = angle2;TrySetTarget((byte)11, (ushort)angle3);}//.........//if (k == 9){angle1 = Convert.ToSingle(i);angle2 = angle1 * (-16) + 2252;if (angle2 < 992){angle2 = 992;}if (angle2 > 2000){angle2 = 2000;}angle3 = angle2 * 4;a9 = angle2;TrySetTarget((byte)12, (ushort)angle3);}k = k + 1;} }}}
转载于:https://www.cnblogs.com/youngsea/p/8764123.html
[其他]JAVA与C#的Socket通信相关推荐
- Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制
JAVA 中原生的 socket 通信机制 转载自:https://github.com/jasonGeng88/blog 当前环境 jdk == 1.8 知识点 socket 的连接处理 IO 输入 ...
- connect: 网络不可达_Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制
本文转自:https://github.com/jasonGeng88/blog 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https ...
- Java 网络通信必备之socket通信基本原理介绍
Java socket通信基本原理介绍 Java socket通信在不断的进行相关代码的开发,下面我们就看看如何才能更好的使用有关技术为我们的编程工作带来一定的帮助. 作者:佚名来源:互联网|2010 ...
- Android java和C的Socket通信demo(可用)
原址 关于Android应用与Framework的socket通信,相信关心这个问题的朋友们已经看过<android使用socket使底层和framework通信>这篇文章,美中不足的是作 ...
- java与C语言socket通信(C客户端java服务端)
服务器端代码 MyServer.java import java.io.*; import java.net.*; import java.util.*;public class MyServer { ...
- java整合Apache-mima进行socket通信
项目中遇到一个需求,需要安卓多客户端连接java后台进行相互通信,保持长连接,所以想到用socket来做,在网上看了一堆资料后,发现了mina框架,下面把自己整合的代码记录一下. jar包自己在网上找 ...
- java群聊_Java Socket通信实现私聊、群聊
前言 闲言少叙,上代码! 代码编写 server服务端 /*** 服务端*/ public classServer {private static ServerSocket server = null ...
- 【JAVA实战】用socket通信编程制作多人聊天室
个人简介
- java iso8583 socket 服务_JAVA客户端amp;服务器的socket通信
JAVA客户端&服务器的socket通信 socket是两台主机之间的一个连接通道,它可以完成七个基本操作: 发送远程机器 发送数据 接收数据 关闭连接 绑定端口 监听入站数据 再绑定端口上接 ...
最新文章
- python查看目录下的文件_Python——查看目录下所有的目录和文件
- JavaScript作用域闭包简述
- 那份让我想死的化工原理补考试卷
- boost::geometry::default_distance_result用法的测试程序
- 验证码---H_img.php
- Tableau研学小课堂(part3)--Tableau数据可视化
- Best Cow Fences(信息学奥赛一本通-T1434)
- python处理一个文件夹下的所有文件并保存在新的文件夹
- linux nginx php 启动命令,linux nginx启动,重启,关闭命令
- docker︱docker run的解读与一键部署
- HttpClient3.x之Get请求和Post请求示例
- Python中的*args和**kwargs的理解与用法
- 单片机用C语言锯齿波,试用c语言编写一个能输出锯齿波信号的单片机c51程序
- 软件设计文档编写概述
- C++学习日记#3——追赶法求解系数矩阵为对角占优的三对角线方程组
- 关于地理数据坐标转换
- 2021年12月四六级考试成绩批量查询Java
- 架构漫谈专栏系列文章
- linux ftp 取文件,linux下拉取文件的方法
- 在RecyclerView里使用图片轮播