java 对数据报通信、socket通信的支持和相关操作

DatagramPacket,DatagramSocket实现数据报收发,使用UDP协议:不可靠的连接,

速度快,用于聊天工具:
DatagramPacket定义数据报;
DatagramSocket定义数据报的接收和发送;
———–实现UDP数据报客户端:

package com.mldn;

import .net.DatagramPacket;

import .net.DatagramSocket;

import .net.SocketException;

import .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:~$ 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通信的支持和相关操作
本文地址:https://www.zhiletu.com/archives-174.html
关注公众号:智乐兔

赞赏

wechat pay微信赞赏alipay pay支付宝赞赏

上一篇
下一篇

相关文章

在线留言

你必须 登录后 才能留言!

在线客服
在线客服 X

售前: 点击这里给我发消息
售后: 点击这里给我发消息

智乐兔官微