java 对数据报通信、socket通信的支持和相关操作
DatagramPacket,DatagramSocket实现数据报收发,使用UDP协议:不可靠的连接,
速度快,用于聊天工具:
DatagramPacket定义数据报;
DatagramSocket定义数据报的接收和发送;
———–实现UDP数据报客户端:
package com.mldn;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
import java.io.IOException;
public class Datagram
{
public static void main(String[] args)
{
DatagramSocket client = null; // 声明数据报收发的客户端
byte[] buf = new byte[1024]; // 开辟空间,接收有限制的数据
DatagramPacket dp = null; // 声明数据报对象
try
{
client = new DatagramSocket(8839); // 客户端监听8839端口
}
catch (SocketException e)
{
e.printStackTrace();
}
dp = new DatagramPacket(buf, 1024); // 接收长度为1024字节的数据报并保存在buf中
try
{
client.receive(dp); // 接收数据报
}
catch (IOException e)
{
e.printStackTrace();
}
String status = new String(dp.getData(), 0, dp.getLength()) + “from: ” + dp.getAddress().getHostAddress() + “:” + dp.getPort();
System.out.println(status); // 输出内容
client.close();
}
}
/*
ubuntu@xu-desktop:~$ java com.mldn.Datagram
Hello, World!from: 127.0.1.1:3000
// UDP中客户端总是打开的,随时准备从服务器接收数据;
// 而服务器不一定打开
*/
—–实现数据报服务器端:
package com.mldn;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.net.SocketException;
import java.io.IOException;
public class DatagramServer
{
public static void main(String[] args)
{
DatagramSocket sends = null; // 数据报发送端
DatagramPacket dp = null; // 用于发送的数据报
try
{
sends = new DatagramSocket(3000); // 数据报服务器在3000端口上监听
}
catch (SocketException e)
{
//
}
String str = “Hello, World!”;
try
{
dp = new DatagramPacket(str.getBytes(), str.length(), InetAddress.getLocalHost(), 8839); // 发送给本机上所有监听8839端口的接收者
}
catch (UnknownHostException e)
{
//
}
System.out.println(“发送信息…”);
try
{
sends.send(dp);
}
catch (IOException e)
{
//
}
sends.close(); // 关闭socket
}
}
/*
ubuntu@xu-desktop:~$ java com.mldn.DatagramServer
发送信息…
ubuntu@xu-desktop:~$ java com.mldn.DatagramServer
发送信息…
// UDP中服务器不管客户端是否再监听,都照样发送数据,不保证数据被客户端接收到1
*/
声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 嗅谱网
转载请注明:转自《java 对数据报通信、socket通信的支持和相关操作》
本文地址:http://www.xiupu.net/archives-174.html
关注公众号:
微信赞赏
支付宝赞赏