网络编程(DatagramSocket && DatagramPacket)

UDP传输
udp传输数据就好像在大海上运输货物,DatagramSocket就像的两个通信港口的码头,DatagramPacket就像在两端运输货物的轮船

发送端(send)
创建DatagramSocket,随机端口号
创建DatagramPacket,制定数据,长度,地址和端口
使用DatagramSocket发送DatagramPacket
关闭DatagramSocket
异常处理

package cn.bdqn.cm;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class Demo12 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Demo12 d=new Demo12();
	d.jieshou();
	d.send();
}
public void send()
{
	DatagramSocket ds=null;
	try {
		ds=new DatagramSocket();
		byte [] b="ni hao wo shi fa song duan".getBytes();
		//每个数据报不能大于64k 
		DatagramPacket pack = new DatagramPacket(b, 0, b.length,
				InetAddress.getByName("127.0.0.1"), 9901);
		ds.send(pack);
	} catch (SocketException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (UnknownHostException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}finally
	{
		if(ds!=null)
		{
			ds.close();
		}
	}
}

接收端(receive)
创建DatagramSocket,匹配端口号
创建DatagramPacket,创建接收数据和有效数据长度
接收socket
接收packet
关闭DatagramSocket

public void jieshou()
{
DatagramSocket ds=null;
try {
ds=new DatagramSocket(9901);
byte [] b=new byte[1024];
DatagramPacket pack = new DatagramPacket(b,0,b.length);
ds.receive(pack);
String str=new String(pack.getData(),0,pack.getLength());
System.out.println(str);
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally
{
if(ds!=null)
{
ds.close();
}
}
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值