六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 219|回复: 0

UDP Socket(传输long类型数据)

[复制链接]

升级  1%

61

主题

61

主题

61

主题

举人

Rank: 3Rank: 3

积分
203
 楼主| 发表于 2013-2-7 06:11:28 | 显示全部楼层 |阅读模式
1、UDP:向应用程序提供了一种发送封装的原始IP数据报的方法、并且发送时无需建立连接,是一种不可靠的连接,效率高;数据报/非连接

                 2、Socket:两个Java应用程序可通过一个双向的网络通信连接实现数据交换,这个双向链路的一端称为一个Socket、Socket通常用来实现client—server连接、java.net包中定义的两个Socket和ServerSocket,分别用来实现双向连接的client和server端、建立连接时所需的寻址信息为远程计算机的IP地址和端口号(Port number)——TCP端口 UDP端口分开,每一个65536个端口
import java.net.*;import java.io.*;public class TestUDPClient { // 将long类型数转换为字节数组public static void main(String args[]) throws Exception {long n = 10000L;ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 以字节数组形式输出DataOutputStream dos = new DataOutputStream(baos); // 创建数据输出流dos.writeLong(n); // 将n写入字节数组byte[] buf = baos.toByteArray(); // 定义字节数组,字符串解析为字节数组System.out.println(buf.length);// 创建数据报DatagramPacket dp = new DatagramPacket(buf, buf.length,new InetSocketAddress("127.0.0.1", 5678));DatagramSocket ds = new DatagramSocket(9999);ds.send(dp); // 发送数据报ds.close();}}
import java.net.*;import java.io.*;public class TestUDPServer {public static void main(String args[]) throws Exception {byte buf[] = new byte[1024]; // 申请1K内存空间DatagramPacket dp = new DatagramPacket(buf, buf.length);// 创建包裹用来接收数据DatagramSocket ds = new DatagramSocket(5678);// UDP的socket,5678端口while (true) {ds.receive(dp); // 接收数据报,存放在buf[]中,如果没接收到数据则一直等待ByteArrayInputStream bais = new ByteArrayInputStream(buf); // 接收字节数组,放入buf[]中DataInputStream dis = new DataInputStream(bais); // 创建数据输入流System.out.println(dis.readLong()); // 转换为long类型}}}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表