大家都知道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()方法说明相关推荐

  1. socket:数据报套接字

    数据报套接字 一.什么是数据报套接字 二.基于流套接字的客户/服务器的工作流程 1.服务器 2.客户端 三.套接字接口 1.recvfrom()系统调用 2.sendto()系统调用 四.示例 一.什 ...

  2. Java网络编程套接字

    文章目录 1.网络编程基础 2.什么是网络编程 3.网络编程中的基本概念 3.1.发送端和接收端 3.2 请求和响应 3.3 客户端和服务端 3.4 常见的客户端服务端模型 4.Socket套接字 4 ...

  3. 【网络编程】Socket套接字;UDP数据报套接字编程;TCP流套接字编程

    文章目录 1. 什么是网络编程 2. 网络编程中的基本概念 3. Socket套接字 4 UDP数据报套接字编程 4.1 客户端服务器交互流程 4.2 UDP版本的回显服务 4.3 英译汉服务 5. ...

  4. Linux 套接字编程中的 5 个隐患

    Linux 套接字编程中的 5 个隐患 (2011-05-03 17:50) 分类: Socket编程 在 4.2 BSD UNIX® 操作系统中首次引入,Sockets API 现在是任何操作系统的 ...

  5. 网络编程【UDP数据报套接字编程】

    目录 1.网络编程基础 1.1 为什么需要网络编程? 1.2 什么是网络编程 1.3 网络编程中的基本概念 2.Socket套接字 2.1 分类 3.UDP数据报套接字编程 3.1 DatagramS ...

  6. 浅析C#中的套接字编程

    套接字基本概念: 套接字是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元.可以将套接字看作不同主机间的进程进行双向通信的端点,它构成了单个主机内及整个网络间的编程界面.套接字存在于通信域中 ...

  7. 套接字编程---2(TCP套接字编程的流程,TCP套接字编程中的接口函数,TCP套接字的实现,TCP套接字出现的问题,TCP套接字多进程版本,TCP套接字多线程版本)

    TCP模型创建流程图 TCP套接字编程中的接口 socket 函数 #include <sys/types.h> /* See NOTES */ #include <sys/sock ...

  8. java套接字客户端_使用Java从客户端套接字读取数据(Read data from a client socket in Java)...

    使用Java从客户端套接字读取数据(Read data from a client socket in Java) 我编写了从客户端套接字发送/接收数据的代码. 发送数据步骤已成功完成,但是当我想从套 ...

  9. C#中的套接字编程(一) --转

    TCP/IP 体系结构与特点     TCP/IP协议实际上就是在物理网上的一组完整的网络协议.其中TCP是提供传输层服务,而IP则是提供网络层服务.TCP/IP包括以下协议:     IP:网间协议 ...

最新文章

  1. 白话Elasticsearch18-深度探秘搜索技术之基于slop参数实现近似匹配以及原理剖析
  2. android fm模块学习,AndroidFM模块学习之5关闭FM流程
  3. 位域 内存 字节序_C语言中的位域、字节序、比特序、大小端(转)
  4. 字符串的最长不重复字串
  5. 如何解决Greenplum pg_dump备份时的分布策略缺失等问题
  6. 解决 css 浮动后 父元素高度失效问题
  7. adobe flash builder 4 能编php,Adobe Flash builder 4的序列号
  8. DOSbox安装使用教程和汇编工具
  9. 大学计算机第一学期期末考试试题,《大学计算机基础》期末考试试题A卷.doc
  10. 每周论文精读01——3D Human Pose Estimation with 2D Marginal Heatmaps
  11. 基于眨眼状态的在线疲劳检测系统(Matlab-GUI设计)
  12. 数据清洗整理基本操作(R:dplyr、tidyr、lubridate)
  13. 中间件-RabbitMQ学习笔记
  14. 如何快速在Ubuntu18.04.1上安装k8s1.20的简明教程
  15. 计算机无法删除用户,怎么彻底删除一个用户
  16. arthas-dashboard
  17. Python 中 list 和 deque 性能对比
  18. 一款纯粹的在线视频App,基于Material Design + MVP + RxJava + Retrofit + Realm
  19. php yii的优缺点,YII2框架的优缺点是什么
  20. Chrome浏览器播放HTML5音频没声音的解决方案

热门文章

  1. 被动抓病毒的日子(2)【入侵大佬:xia.beihaixue.com】 直接跑满在下的CPU (*‘へ‘*)
  2. 基础排序算法----归并排序
  3. Windows防火墙之DNS端口号
  4. llinux服务器7277端口未开启,造成was控制台中node agent远程节点显示停用状态
  5. 中国植物藻类提取物市场深度调研与竞争对手经营状况分析报告2022-2028年版
  6. 基于51单片机的智能鱼缸设计
  7. 9.6新股票池操作建议(ZZ)
  8. Topological Data Analysis(TDA) 拓扑数据分析与mapper算法
  9. 投标方案应该怎么写?
  10. 元音的时域波形、频谱特点举例分析