博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java基础篇---网络编程(UDP程序设计)
阅读量:4511 次
发布时间:2019-06-08

本文共 1674 字,大约阅读时间需要 5 分钟。

java基础篇---网络编程(UDP程序设计)

 

UDP程序设计

在TCP的索引操作都必须建立可靠地连接,这样一来肯定会浪费大量的系统性能,为了减少这种开销,在网络中又提供了另外一种传输协议---UDP,不可靠的连接,这种协议在各个聊天工具中被广泛的应用。

咋UDP开发中使用DatagramPacket包装一条要发送的信息,之后使用DatagramSocket用于完成信息的发送操作。

例如:现在使用聊天工具进行聊天的功能,那么A的发送的信息B不一定可以接受的到,因为使用的是UDP的协议。

UDP中主要是使用数据报协议发送的。

DatagramPacket中的方法

是包含真实的是要发送的信息,称为数据报

所有的数据报使用DatagramPacket进行发送的操作

DatagramSocket

那么如果要想运行程序,则在数据报的开发中,应该首先保证客户端要打开

import java.net.DatagramPacket ;import java.net.DatagramSocket ;public class UDPClient{ public static void main(String args[]) throws Exception{ // 所有异常抛出 DatagramSocket ds = null ; // 定义接收数据报的对象 byte[] buf = new byte[1024] ; // 开辟空间,以接收数据 DatagramPacket dp = null ; // 声明DatagramPacket对象 ds = new DatagramSocket(9000) ; // 客户端在9000端口上等待服务器发送信息 dp = new DatagramPacket(buf,1024) ; // 所有的信息使用buf保存 ds.receive(dp) ; // 接收数据 String str = new String(dp.getData(),0,dp.getLength()) + "from " + dp.getAddress().getHostAddress() + ":" + dp.getPort() ; System.out.println(str) ; // 输出内容 } };

要进一步等待服务器发送信息

import java.net.DatagramPacket ;import java.net.DatagramSocket ;import java.net.InetAddress ; public class UDPServer{ public static void main(String args[]) throws Exception{ // 所有异常抛出 DatagramSocket ds = null ; // 定义发送数据报的对象 DatagramPacket dp = null ; // 声明DatagramPacket对象 ds = new DatagramSocket(3000) ; // 服务端在3000端口上等待服务器发送信息\ String str = "hello World!!!" ; dp = new DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("localhost"),9000) ; // 所有的信息使用buf保存 System.out.println("发送信息。") ; ds.send(dp); // 发送信息出去 ds.close() ; } };

UDP 属于不可靠的连接协议,服务端发送的信息客户端未必接收的到,采用的是数据报的协议发送。

 转载自 http://www.cnblogs.com/oumyye/p/4271198.html

转载于:https://www.cnblogs.com/birkhoff/p/4288460.html

你可能感兴趣的文章
C#控件的闪烁问题解决方法总结
查看>>
js 冒泡事件与解决冒泡事件
查看>>
2018-2019赛季多校联合新生训练赛第七场(2018/12/16)补题题解
查看>>
后台全选功能以及数据的提交方法
查看>>
Android 动画效果 及 自定义动画
查看>>
const与#define相比有什么不同?
查看>>
Eclipse4.7 SpringIDE插件的安装
查看>>
C#面向对象基础
查看>>
Jquery页面加载效果
查看>>
ios对new Date() 的兼容问题
查看>>
Charles常用设置
查看>>
filebeat
查看>>
如何在Bitmap中画图?(MFC)
查看>>
laravel 多检索条件列表查询
查看>>
mysql 行转列 和 列转行
查看>>
有关时延扩展的双语句子
查看>>
工作多年后积累的设计灵活,稳定,优秀WinForms应用程序的最佳实践 WinForms best practice...
查看>>
iOS开发——高级篇——iOS键盘的相关设置(UITextfield)
查看>>
JVMGC机制
查看>>
IAR for AVR 报array is too large错误 【已解决】
查看>>