jdk6.0从入门到精通-----chapter5网络编程 udp套接字

用到的主要类DatagramPacket,DatagramSocket
DatagramSocket类用于创建接收和发送UDP的sockect实例。
构造器
DatagramSocket():通常用于客户端编程
DatagramSocket(int prot) :固定监听prot端口的报文
最主要的方法有:
receive(DatagramPacket p)接收报文到p中,
send(DatagramPacket p)发送报文
close()

DatagramPacket 处理报文,将字节数组,目标地址,目标端口等数据包装成报文或者将报文拆分成字节数组

接收端


package udp;

import java.net.InetAddress;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UDPReceive
{
public static void main(String args[])
{
try
{
if (args.length != 1)
throw new IllegalArgumentException("Wrong number of args");
int port = Integer.parseInt(args[0]);
DatagramSocket dsocket = new DatagramSocket(port);
byte[] buffer = new byte[2048];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
for(;;)
{
dsocket.receive(packet);
String msg = new String(buffer, 0, packet.getLength());
System.out.println(packet.getAddress().getHostName() + ": " + msg);
packet.setLength(buffer.length);
}
}
catch (Exception e)
{
System.err.println(e);
}
}
}


发送端
package udp;

import java.net.InetAddress;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UDPSend
{
public static void main(String args[])
{
try
{
if (args.length < 3)
throw new IllegalArgumentException("Wrong number of args");
String host = args[0]; //ip地址
int port = Integer.parseInt(args[1]);//端口
byte[] message;
String msg = args[2]; //发送信息
message = msg.getBytes();
InetAddress address = InetAddress.getByName(host);
DatagramPacket packet = new DatagramPacket(message, message.length,address, port); //
DatagramSocket dsocket = new DatagramSocket();
dsocket.send(packet);
dsocket.close();
}
catch (Exception e)
{
System.err.println(e);
}
}
}

执行时,在cmd中先启动接收端

[i]E:\Eclipse workspace\ch05\src>[/i]java udp.UDPReceive 8888

在打开一个cmd,启动发送端
E:\Eclipse workspace\ch05\src>java udp.UDPSend localhost 8888 hello
会在接收端显示:localhost: hello
缺点:
客户端只能发送一次就结束了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值