- 浏览: 153008 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
xjk112:
2015-05-08 13:21
我奋斗了18年才和你坐在一起喝咖啡[转] -
sandy_vv:
给达内广告,收费 ?
Java 利用url下载MP3保存到本地 -
78945612:
哥们
这个对于初学者怎么整呢?
android 定时关机 -
cn23snyga:
请教贵博,用ACE 绘制出的图表,可以捕捉到点击事件的坐标值 ...
使用achartengine开发曲线图相关的Android应用程序(zhuan) -
qi19901212:
楼主你好,我开发的achartengine放在 scrollv ...
Android开发工具之AChartEngine
突然要用到C和java的Socket互通,以前都只是同一种语言自己通信,菜鸟从没有写过两种语言间的socket通信。今天试了一下,就是一个简单的互通程序,给初学者一个借鉴。欢迎大家拍砖。
如要转载,请注明作者及出处。
java 和 c用socket互通,最关键的菜鸟认为是数据结构的统一。比如说,在c中一个char型是8bit(一个字节),但是在java中,char 是16bit(两个字节),所以说c的char和java的char是直接不能互相转换的。在菜鸟的程序中,菜鸟用了c的char 和 java的byte型,两个数据类型都是8bit,这样就保证了数据正确传输的基本条件之一。
菜鸟方便起见,用了udp。c的程序只能在Linux/Unix使用
client: udpc.c server:udpserver.java
执行顺序:开两个终端A,B
1。分别将A,B的路径cd到程序所在目录
2。A中执行
#javac udpserver.java
#java udpserver
这样,java的服务器就启动了
3。B中执行
#gcc -o udpc udpc.c
#./udpc
这样,c的客户端就启动了。
最后结果:
server端:
[root@ns c_java_udp]# javac udpserver.java
[root@ns c_java_udp]# java udpserver
Sending string:Client to Server!
client端:
[root@ns c_java_udp]# gcc -o udpc udpc.c
[root@ns c_java_udp]# ./udpc
send string success
[root@ns c_java_udp]#
下面是代码:
server:
========================================================================
///////////////////////////////////////////
//1.#javac udpserver.java
//2.#java udpserver
//////////////////////////////////////////
import java.io.*;
import java.lang.*;
import java.net.*;
public class udpserver
{
private DatagramSocket server_sock;
private DatagramPacket pac;
private byte recv_buffer[];
private String recv_string;
public udpserver()
{
Init();
}
public void Init()
{
try
{
//监听端口设为1234
server_sock=new DatagramSocket(1234);
recv_buffer=new byte[1024];//接收缓冲区,byte型
pac=new DatagramPacket(recv_buffer,recv_buffer.length);//构造一个packet
recv_string="";
while(true)//循环接受数据
{
server_sock.receive(pac);//阻塞式接收数据
//将byte[]转化成string
recv_string=new String(recv_buffer,0,pac.getLength());
System.out.println(recv_string);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String args[])
{
new udpserver();
}
}
===================================================================
client: udpc.c
===================================================================
///////////////////////////////////////////
//1.#gcc -o udpc udpc.c
//2#./udpc
///////////////////////////////////////////
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <unistd.h>
int main(int argc, char **argv)
{
int fd;
//声明一个v4地址结构体,用来保存通信地址等信息
struct sockaddr_in address;
int address_len;
//准备发送的字符串,char型
char line[100] = "Sending string:Client to Server!";
int n;
//建立套接口
fd = socket(AF_INET, SOCK_DGRAM, 0);//AF_INET和SOCK_DGRAM的组合对应UDP协议
//连接
//将v4地址结构体清0
bzero(&address, sizeof(address));
//设置各项相关属性
address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr("127.0.0.1");
address.sin_port = htons(1234);
address_len = sizeof(address);
//发送数据
sendto(fd, line, strlen(line)+1, 0,(struct sockaddr *)&address, sizeof(address));
printf("send string success\n");
}
===========================================================================
玩具程序,希望能对大家有所帮助。
如要转载,请注明作者及出处。
java 和 c用socket互通,最关键的菜鸟认为是数据结构的统一。比如说,在c中一个char型是8bit(一个字节),但是在java中,char 是16bit(两个字节),所以说c的char和java的char是直接不能互相转换的。在菜鸟的程序中,菜鸟用了c的char 和 java的byte型,两个数据类型都是8bit,这样就保证了数据正确传输的基本条件之一。
菜鸟方便起见,用了udp。c的程序只能在Linux/Unix使用
client: udpc.c server:udpserver.java
执行顺序:开两个终端A,B
1。分别将A,B的路径cd到程序所在目录
2。A中执行
#javac udpserver.java
#java udpserver
这样,java的服务器就启动了
3。B中执行
#gcc -o udpc udpc.c
#./udpc
这样,c的客户端就启动了。
最后结果:
server端:
[root@ns c_java_udp]# javac udpserver.java
[root@ns c_java_udp]# java udpserver
Sending string:Client to Server!
client端:
[root@ns c_java_udp]# gcc -o udpc udpc.c
[root@ns c_java_udp]# ./udpc
send string success
[root@ns c_java_udp]#
下面是代码:
server:
========================================================================
///////////////////////////////////////////
//1.#javac udpserver.java
//2.#java udpserver
//////////////////////////////////////////
import java.io.*;
import java.lang.*;
import java.net.*;
public class udpserver
{
private DatagramSocket server_sock;
private DatagramPacket pac;
private byte recv_buffer[];
private String recv_string;
public udpserver()
{
Init();
}
public void Init()
{
try
{
//监听端口设为1234
server_sock=new DatagramSocket(1234);
recv_buffer=new byte[1024];//接收缓冲区,byte型
pac=new DatagramPacket(recv_buffer,recv_buffer.length);//构造一个packet
recv_string="";
while(true)//循环接受数据
{
server_sock.receive(pac);//阻塞式接收数据
//将byte[]转化成string
recv_string=new String(recv_buffer,0,pac.getLength());
System.out.println(recv_string);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String args[])
{
new udpserver();
}
}
===================================================================
client: udpc.c
===================================================================
///////////////////////////////////////////
//1.#gcc -o udpc udpc.c
//2#./udpc
///////////////////////////////////////////
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <unistd.h>
int main(int argc, char **argv)
{
int fd;
//声明一个v4地址结构体,用来保存通信地址等信息
struct sockaddr_in address;
int address_len;
//准备发送的字符串,char型
char line[100] = "Sending string:Client to Server!";
int n;
//建立套接口
fd = socket(AF_INET, SOCK_DGRAM, 0);//AF_INET和SOCK_DGRAM的组合对应UDP协议
//连接
//将v4地址结构体清0
bzero(&address, sizeof(address));
//设置各项相关属性
address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr("127.0.0.1");
address.sin_port = htons(1234);
address_len = sizeof(address);
//发送数据
sendto(fd, line, strlen(line)+1, 0,(struct sockaddr *)&address, sizeof(address));
printf("send string success\n");
}
===========================================================================
玩具程序,希望能对大家有所帮助。
发表评论
-
命令模式的应用场景
2012-07-10 16:11 2140Command模式通常可应用到以下场景: 1 Mult ... -
java中finally的作用
2012-06-28 13:22 2315java中finally的作用 结论1:当try里面的代码没 ... -
JMS JAR
2012-06-28 13:24 1500相关的JMS Jar包 -
深入掌握JMS(六):JMSReplyTo(转)
2012-02-28 19:31 791在下面的例子中,首先创建两个Queue,发送者给一个Queue ... -
深入掌握JMS(五):DeliveryMode例子(转)
2012-02-28 19:31 792在下面的例子中,分别发送一个Persistent和nonper ... -
深入掌握JMS(四):实战Topic//消息头(zhuan)
2012-02-27 22:39 958与Queue不同的是,Topic实现的是发布/订阅模型,在下面 ... -
深入掌握JMS(三):MessageListener Queue
2012-02-27 22:34 3335深入掌握JMS(三):MessageListener Qu ... -
Spring与ActiveMQ(JMS)的整合说明(zhuan)
2012-02-27 22:30 859Spring与ActiveMQ(JMS)的整合 ... -
深入掌握JMS(一):JMS基础(zhuan)
2012-02-27 22:29 750深入掌握JMS(一):JMS基础 1. JMS基本概念 JM ... -
深入掌握JMS(二)(zhuan)
2012-02-27 22:28 748深入掌握JMS(二):一个JMS例子 前一讲简单的介绍了一下 ... -
java 书籍推荐
2012-03-08 17:46 710《Thinking in Java》 《Effective ... -
java 使用相对路径读取文件(zhuan)
2012-02-24 13:28 1013java 使用相对路径读取文件 1.java project ... -
Java 配置
2012-02-24 10:18 0 -
收藏:JDBC常用连接写法(包括MySQL、Oracle、Sybase、SQLServer、DB2)(zhuan)
2012-02-23 10:11 10161. MySQL(http://www.mysql.com)m ... -
Java Resource
2012-02-21 13:25 0Struts:http://struts.apac ... -
jsp 导出excel文件,文件名含有中文 出现乱码 解决方案
2012-02-29 20:01 4458jsp 导出excel文件,文件名含有中文 出现乱码 解决方案 ... -
Eclipse 插件
2012-02-15 13:08 0log4j http://logging.apache.or ... -
Java jar
2012-02-14 22:18 0Java jar -
java designpattern
2012-02-14 16:58 0 -
jdbc
2011-12-22 13:20 680package com.yum.amp.util; ...
相关推荐
蚂蚁集团作为全球知名的金融科技公司,其开源的Java研发框架——gssdgv-zhuan-ke-master_java_,为开发者提供了强大的工具集,旨在提升Spring Boot应用的性能和可扩展性。本文将深入探讨这一框架的核心特性、应用...
标题 "zhuan_java_untilgw8_android_" 暗示了这是一个关于使用Java语言在UntilGW8平台上开发Android游戏的项目,特别是一款简单的打砖块游戏。在这个项目中,我们可以深入学习到Java编程语言、Android应用开发的基础...
在给定的“ban-zhuan.zip_JAVA穷举法搬砖”主题中,我们面对的是一个数学问题,该问题与实际的砖块分配有关。36块砖需要36个人来搬运,其中包括男性、女性和小孩,他们各自有不同的搬运能力。男性每次能搬4块砖,...
│ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...
│ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...
│ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...
综上所述,"zhuan 2.zip"提供的抽奖程序是一个基于JavaScript的移动端应用,具备良好的交互性和灵活性。通过JSON文件管理奖品,可与服务器接口对接,同时支持预设中奖选项。这个项目对于学习和理解移动端交互设计、...
通过分析这段代码,我们可以学习到如何在C语言中实现复杂的图形界面和交互式游戏功能,这对于理解和掌握C语言的应用具有重要的意义。此外,对于初学者而言,这也是一个很好的实践项目,可以帮助他们将理论知识应用到...
│ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...
│ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...
Java Swing 是Java GUI(图形用户界面)开发的一个重要库,它是Java AWT(抽象窗口工具包)的扩展,提供了更多的组件和功能。在这个接球小游戏中,开发者利用Swing构建了一个交互式的用户界面,让用户可以通过点击...
"Map o_mapgis_mapgis noteo_mapgis zhuan jpg_out"这部分可能是描述了这个压缩包的主要功能或者过程,即MapGIS的二次开发功能,用于将MapGIS的地图数据转换成JPG格式的光栅图像。"o_mapgis_mapgis noteo_mapgis...
自媒体新媒体软件工具自媒体zhuan钱秘诀资料
map、 key' 和 value 的 取值 and so on
在Java编程中,数据结构之间的转换是常见的操作。在标题和描述中提到的"List转一维数组 Long[]",就是将一个包含Long类型的列表转换为对应的Long数组。这里我们将详细探讨如何进行这种转换,并了解相关的编程概念。 ...
压缩包中的"旋转 led.c"文件很可能是实现这些功能的C语言源代码。C语言是一种广泛用于嵌入式系统开发的编程语言,适用于编写对硬件控制要求严格的程序。开发者可能使用它来编写底层驱动和控制逻辑,以实现旋转LED的...
6. **持续集成/持续部署(CI/CD)**:如Jenkins、Travis CI和CircleCI等工具,自动化构建、测试和部署流程,确保快速且可靠的发布。 7. **设计模式**:是解决常见软件设计问题的经验总结,如单例模式、工厂模式、观察...
标题中的"z zhuan sec_EH4_EH4Z文件转SEC文件_"表明我们正在处理一个涉及到将EH4或EH4Z格式的文件转换为SEC格式的议题。这个过程可能涉及到特定的工具、编程语言或者协议,尤其是在嵌入式系统中,这些文件格式通常与...
import java.util.Scanner; import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.imageio.*; public class Jsq{ public static void main(String [] as){ new JsqFrame(); } } ...
### C语言模拟打砖块程序解析 #### 一、程序概述 本文将深入解析一个用C语言编写的经典游戏——打砖块程序。...这种类型的项目非常适合初学者实践编程技能,同时也是理解C语言和图形编程基础的一个好例子。