关于Java中数据报套接字DatagramSocket中connet()方法说明
大家都知道UDP协议是面向无连接的,但是用于UDP的DatagramSocket类中却有connet()方法,实在令人费解。刚才有学生问起来,研究了下才发现这个方法的真正用法!
connet()方法共有两个重载的方法,这两个方法的本质是一样的,SocketAddress其实是把InnetAddress和port封装在一起。这个里面的地址是指的将来要发送的远端地址,也就是你准备使用send方法把数据报包发送到的地址。
public void connect(InetAddressaddress, int port)
public void connect(SocketAddress addr)
如果你在创建过DatagramSocket套件字之后调用了connet方法中的任何一个,则以后使用此套件字发送数据报包,只能发给这一个地址,不能发给另外的地址。
也许会有人提出疑问:在发送数据报包(DatagramPacket)的时候,我们需要指明对方的地址呀,那么数据报包中的地址与connet方法中的地址有什么关系?
其实这才是关键地方:如果你调用了connet方法,则要发送的数据报包中的地址必须与connet中的地址保证一致,否则会抛出异常:java.lang.IllegalArgumentException:connected address and packet address differ。可能有人会说,这样的设计有点变态呀,connet调用了之后,DatagramPacket中也要指定地址,确实有点变态!!!而实际上,如果你调用了connet方法之后,在发送信息的时候DatagramPacket中完全不需要指明地址也照样可以发送到connet中的地址和端口中。没错,就这么简单!!!
在DatagramSocket中有个getInnetAddress()和getPort()方法,调用的时候发现是null和-1,问题也在这里。如果你调用了connet()方法,那么这两个方法的返回值就是connet中的地址和端口。你以前从来没有调用过connet()方法,所以才返回null和-1。
关于Java中数据报套接字DatagramSocket中connet()方法说明相关推荐
- socket:数据报套接字
数据报套接字 一.什么是数据报套接字 二.基于流套接字的客户/服务器的工作流程 1.服务器 2.客户端 三.套接字接口 1.recvfrom()系统调用 2.sendto()系统调用 四.示例 一.什 ...
- Java网络编程套接字
文章目录 1.网络编程基础 2.什么是网络编程 3.网络编程中的基本概念 3.1.发送端和接收端 3.2 请求和响应 3.3 客户端和服务端 3.4 常见的客户端服务端模型 4.Socket套接字 4 ...
- 【网络编程】Socket套接字;UDP数据报套接字编程;TCP流套接字编程
文章目录 1. 什么是网络编程 2. 网络编程中的基本概念 3. Socket套接字 4 UDP数据报套接字编程 4.1 客户端服务器交互流程 4.2 UDP版本的回显服务 4.3 英译汉服务 5. ...
- Linux 套接字编程中的 5 个隐患
Linux 套接字编程中的 5 个隐患 (2011-05-03 17:50) 分类: Socket编程 在 4.2 BSD UNIX® 操作系统中首次引入,Sockets API 现在是任何操作系统的 ...
- 网络编程【UDP数据报套接字编程】
目录 1.网络编程基础 1.1 为什么需要网络编程? 1.2 什么是网络编程 1.3 网络编程中的基本概念 2.Socket套接字 2.1 分类 3.UDP数据报套接字编程 3.1 DatagramS ...
- 浅析C#中的套接字编程
套接字基本概念: 套接字是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元.可以将套接字看作不同主机间的进程进行双向通信的端点,它构成了单个主机内及整个网络间的编程界面.套接字存在于通信域中 ...
- 套接字编程---2(TCP套接字编程的流程,TCP套接字编程中的接口函数,TCP套接字的实现,TCP套接字出现的问题,TCP套接字多进程版本,TCP套接字多线程版本)
TCP模型创建流程图 TCP套接字编程中的接口 socket 函数 #include <sys/types.h> /* See NOTES */ #include <sys/sock ...
- java套接字客户端_使用Java从客户端套接字读取数据(Read data from a client socket in Java)...
使用Java从客户端套接字读取数据(Read data from a client socket in Java) 我编写了从客户端套接字发送/接收数据的代码. 发送数据步骤已成功完成,但是当我想从套 ...
- C#中的套接字编程(一) --转
TCP/IP 体系结构与特点 TCP/IP协议实际上就是在物理网上的一组完整的网络协议.其中TCP是提供传输层服务,而IP则是提供网络层服务.TCP/IP包括以下协议: IP:网间协议 ...
最新文章
- 白话Elasticsearch18-深度探秘搜索技术之基于slop参数实现近似匹配以及原理剖析
- android fm模块学习,AndroidFM模块学习之5关闭FM流程
- 位域 内存 字节序_C语言中的位域、字节序、比特序、大小端(转)
- 字符串的最长不重复字串
- 如何解决Greenplum pg_dump备份时的分布策略缺失等问题
- 解决 css 浮动后 父元素高度失效问题
- adobe flash builder 4 能编php,Adobe Flash builder 4的序列号
- DOSbox安装使用教程和汇编工具
- 大学计算机第一学期期末考试试题,《大学计算机基础》期末考试试题A卷.doc
- 每周论文精读01——3D Human Pose Estimation with 2D Marginal Heatmaps
- 基于眨眼状态的在线疲劳检测系统(Matlab-GUI设计)
- 数据清洗整理基本操作(R:dplyr、tidyr、lubridate)
- 中间件-RabbitMQ学习笔记
- 如何快速在Ubuntu18.04.1上安装k8s1.20的简明教程
- 计算机无法删除用户,怎么彻底删除一个用户
- arthas-dashboard
- Python 中 list 和 deque 性能对比
- 一款纯粹的在线视频App,基于Material Design + MVP + RxJava + Retrofit + Realm
- php yii的优缺点,YII2框架的优缺点是什么
- Chrome浏览器播放HTML5音频没声音的解决方案
热门文章
- 被动抓病毒的日子(2)【入侵大佬:xia.beihaixue.com】 直接跑满在下的CPU (*‘へ‘*)
- 基础排序算法----归并排序
- Windows防火墙之DNS端口号
- llinux服务器7277端口未开启,造成was控制台中node agent远程节点显示停用状态
- 中国植物藻类提取物市场深度调研与竞争对手经营状况分析报告2022-2028年版
- 基于51单片机的智能鱼缸设计
- 9.6新股票池操作建议(ZZ)
- Topological Data Analysis(TDA) 拓扑数据分析与mapper算法
- 投标方案应该怎么写?
- 元音的时域波形、频谱特点举例分析