当前位置:首页 » 编程语言 » java与c通信

java与c通信

发布时间: 2023-01-19 07:04:56

‘壹’ java服务器和C的客户端进行通信,服务器要接受从客户端发来的一个结构体,如何接收

你打算通过哪种方式进行通信?
如果你打算通过网络通信那么java建立一个服务器端套接字监听一个端口,c语言写的程序向这个服务器端口发生数据即可
如果你打算通过管道通信,那么c语言写的程序向管道中写入数据,java写的程序从管道中读取数据即可

‘贰’ java与c进行socket通讯byte问题

byte 由于在C java中都是有符号(-128到127)
所以你传大于127的数字就出现溢出

C语言解决 : 定义unsigned 无符号
Java解决 : 使用short

‘叁’ linux用java socket与c的socket通信乱码问题

应该就是字符集问题。
首先要确定Linux返回的数据中,采用了那种编码方式,如:GBK。
对应的,在Java一端,将字符串信息转换成byte数组并写入Socket,读出的数据也转换成字符串,
如:
String s = "中文" ;
sockoutputstream.write (s.getBytes ("GBK")) ;

读出来时候,
byte [] buf = sockinputStream.read ()

String s = new String (buf, "GBK") ;

这样就可以了。

‘肆’ 谁有java和C用socket通信的简单例子

这是用Java写的服务器的程序

importjava.net.*;
importjava.io.*;

publicclassServer{

privateServerSocketserver;
privateSocketclient;

publicServer(){
booleanflag=true;
try{
server=newServerSocket(8888);//端口
System.out.println("服务器正在等到客户端连接......");
while(flag){
client=server.accept();//阻塞
newServerThread(client).start();
}
server.close();
}catch(Exceptione){
}
}

publicstaticvoidmain(String[]args){
newServer();
}

{

privateSocketclientThread;
privatePrintStreamout;
privateBufferedReaderin;
privatebooleanflag=true;

publicServerThread(Socketclient){
this.clientThread=client;
System.out.println("主机与客户端成功建立连接,开始通讯!!");
}

publicvoidrun(){
try{
/*
*超时判断:设置超时时间300秒,中断连接或者300秒内客户端无回应信息则认为中断
*缺点便是必须把超时时间设置很长,否则客户端待机也认为超时处理,无法判断是否端口
*/
clientThread.setSoTimeout(300000);
out=newPrintStream(client.getOutputStream());
in=newBufferedReader(newInputStreamReader(client.getInputStream()));
while(flag){
Stringstr=in.readLine();//阻塞
System.out.println("客户端:"+str);
out.println("主机成功接收到您的信息!!");
}
client.close();
}catch(Exceptione){
//如果异常是连接异常,则输出连接断开
if(e.getMessage()=="Connectionreset"){
System.out.println("客户端已断开连接!!");
}
}
}
}
}

这是客户端的

importjava.net.*;
importjava.io.*;

publicclassClient{

privateSocketclient;

publicClient(){
InetAddressip;
try{
System.out.println("正在连接服务器......");
ip=InetAddress.getLocalHost();
Stringlocalip=ip.getHostAddress();
client=newSocket(localip,8888);//阻塞
BufferedReaderinput=newBufferedReader(newInputStreamReader(System.in));
BufferedReaderin=newBufferedReader(newInputStreamReader(client.getInputStream()));
PrintStreamout=newPrintStream(client.getOutputStream());;
booleanflag=true;

System.out.println("成功连接到主机,开始通讯!!");

while(flag){
System.out.printf("请输入信息:");
out.println(input.readLine());//阻塞
//判断是否与主机断开
if(isConnected()){
System.out.println("发生成功!!");
System.out.println("主机:"+in.readLine());
}else{
System.out.println("发生失败!!");
System.out.println("与服务器断开连接!!");
client.close();
break;
}
}
}catch(Exceptione){
System.out.println(e.getMessage());
}
}

//判断服务器是否断开的方法,
//通过OutputStream发送一段测试数据,如果发送失败就表示远端已经断开连接
//但会与正常的传送干扰,所以用sendUrgenData
publicbooleanisConnected(){
try{
client.sendUrgentData(0xFF);
returntrue;
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}

publicstaticvoidmain(String[]args){
newClient();
}
}

‘伍’ Java如何与C进行通信

两个不同进程之间的数据交互:
1、可以选择socket通信
2、可以选择文件,不过要注意好读写
3、消息传递,在windows下抛出一个消息//具体怎么做我没试过,只知道有这方法
4、数据库//这个比较容易实现

上面说的两个不同进程,当然就是可以选择用不同语言写出来的程序了

‘陆’ JAVA和c++是怎么进行通讯的

1. Java Native Interface(JNI)
中文为JAVA本地调用, 从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。

2. Socket通信

3. Web service

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:585
制作脚本网站 发布:2025-10-20 08:17:34 浏览:881
python中的init方法 发布:2025-10-20 08:17:33 浏览:574
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:761
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:677
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1005
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:250
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:108
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:799
python股票数据获取 发布:2025-10-20 07:39:44 浏览:705