java服务器与linux c客户端之间udp通信
2015-01-22 17:07
621 查看
java服务器和 linux c客户端采用udp协议互相通信,最关键的点是数据结构的统一。比如说,在c中一个char型 是8bit,在java中,char 是16bit,所以c和java的char类型不能直接互相转换。在本例程中,c的char 类型和 java的byte类型,两个数据类型都是8bit,这样就保证了数据正确传输的基本条件之一。
java服务器代码如下:
linux c客户端代码如下:
程序比较简单仅供参考,java做客户端和c做服务器这种形式与上述代码类似,在此不赘述。需注意的是java中String类型末尾无'\0',与c语言中char[]末尾是'\0'不同,但udp通信时不需要考虑这点仍可通信。
java服务器代码如下:
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(); } }
linux c客户端代码如下:
#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做服务器这种形式与上述代码类似,在此不赘述。需注意的是java中String类型末尾无'\0',与c语言中char[]末尾是'\0'不同,但udp通信时不需要考虑这点仍可通信。
相关文章推荐
- Java基于UDP实现服务器和多客户端之间的通信
- Java-网络通信、TCP、UDP、服务器客户端的通信
- 客户端与服务器之间分别通过TCP和UDP进行通信
- Java基于TCP实现服务器和多客户端之间的通信
- linux 网络编程:客户端与服务器通过TCP协议相互通信 + UDP
- Java实现单个客户端与服务器UDP通信
- linux 网络编程:客户端与服务器通过TCP协议相互通信 + UDP
- 【Java学习笔记】60:客户端PC-后端程序服务器-数据库服务器之间的通信demo
- Python服务器与多种客户端(Python/Java/Android)之间的通信
- 基于UDP协议下的客户端与服务器之间的通信
- java使用UDP协议进行服务器客户端通信
- 基于UDP的服务器和客户端之间的通信
- 使用thrift实现了Java服务器和nodejs客户端之间的跨平台通信
- C#基于TCP&UDP实现服务器与多个客户端之间的通信(客户端之间直接通信,不靠服务器端转发消息)
- Python服务器与多种客户端(Python/Java/Android)之间的通信
- JAVA 网络通信中 服务器与客户端新建IO流的顺序问题
- 客户端和应用服务器之间利用HttpClient和Servlet交互JSON对象进行通信
- java 通过 socket 实现 服务器和客户端的通信 TCP
- 请教C/S端 服务器与客户端之间的通信模式是用什么样的比较好?
- java客户端与服务器通信过程示意图