socket编程(三)---- UDP协议与传输数据报文

UDP协议一般应用在“群发信息”的场合,所以它可以利用多线程机制,实现多信息的同步发送。

为了改善代码结构,把一些业务逻辑的动作抽象成方法,并封装成类,这样,基于UDP功能的类就可以在其他应用项目里被轻易的重用。

如果把客户端的所有代码都写在一个文件中,那么代码的功能很有可能都聚集在一个方法里,代码的可维护性将会变得很差。所以专门设计ClientBean类,在其中封装了客户端通讯的一些功能方法,在此基础上,通过UDPClient.java文件,实现UDP客户端的功能。

首先,设计ClientBean类。

public class ClientBean {
	private DatagramSocket ds;//描述UDP通讯的DatagramSocket对象
	private byte buffer[];//用来封装通讯字符串
	private int clientport;//客户端的端口号
	private int serverport;//服务器端的端口号
	private String content;//通讯内容
	private InetAddress ia;//描述通讯地址
	public DatagramSocket getDs() {
		return ds;
	}
	public void setDs(DatagramSocket ds) {
		this.ds = ds;
	}
	public byte[] getBuffer() {
		return buffer;
	}
	public void setBuffer(byte[] buffer) {
		this.buffer = buffer;
	}
	public int getClientport() {
		return clientport;
	}
	public void setClientport(int clientport) {
		this.clientport = clientport;
	}
	public int getServerport() {
		return serverport;
	}
	public void setServerport(int serverport) {
		this.serverport = serverport;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public InetAddress getIa() {
		return ia;
	}
	public void setIa(InetAddress ia) {
		this.ia = ia;
	}
	public ClientBean() throws SocketException, UnknownHostException {
		buffer = new byte[1024];
		clientport = 1985;
		serverport = 1986;
		content = "";
		ds = new DatagramSocket(clientport);
		ia = InetAddress.getByName("localhost");
	}
	public void sendToServer() throws IOException{
		buffer = content.getBytes();
		ds.send(new DatagramPacket(buffer, content.length(), ia, serverport));
		
	}
}

 

在上述的代码里定义了描述用来实现UDP通讯的DatagramSocket类型对象ds

描述客户端和服务器端的端口号clientportserverport

用于描述通讯信息的buffercontent对象。buffer对象是byte数组类型的,可通过UDP的数据报文传输,而content是String类型的,在应用层面表示用户之间的通讯内容&#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值