UDP SOCKET编程中的connect()
来源:互联网 发布:城满财富 理财知 编辑:程序博客网 时间:2024/05/19 14:00
UDP是一个无连接的协议,因此socket函数connect()似乎对UDP是没有意义的,然而事实不是这样。
使用connect()来建立与服务程序的连接。与TCP协议不同,UDP的connect()并没有与服务程序三次握手。上面说了UDP是非连接的,实际上也可以是连接的。使用连接的UDP,kernel可以直接返回错误信息给用户程序,从而避免由于没有接收到数据而导致调用recvfrom()一直等待下去,看上去好像客户程序没有反应一样
一个插口有几个属性,其中包括协议,本地地址/端口,目的地址/端口。
对于UDP来说:
socket()函数建立一个插口;
bind()函数指明了本地地址/端口(包括ADDR_ANY, 通配所有本地网络接口);
connect()可以用来指明目的地址/端口;
一般来说,UDP客户端在建立了插口后会直接用sendto()函数发送数据,需要在sendto()函数的参数里指明目的地址/端口。如果一个UDP客户端在建立了插口后首先用connect()函数指明了目的地址/端口,然后也可以用send函数发送数据,因为此时send函数已经知道对方地址/端口,用getsockname()也可以得到这个信息。
UDP客户端在建立了插口后会直接用sendto()函数发送数据,还隐含了一个操作,那就是在发送数据之前,UDP会首先为该插口选择一个独立的UDP端口(在1024—5000之间),将该插口置为已绑定状态。如果一个UDP客户端建立插口后首先用bind()函数指明了本地地址/端口,也是可以的,这样可以强迫UDP使用指定的端口发送数据。(事实上,UDP无所谓服务器和客户端,这里的界限已经模糊了。)
- UDP SOCKET编程中的connect()
- UDP SOCKET编程中的connect()
- UDP编程中的connect
- UDP编程中的connect
- UDP编程中的connect
- UDP编程中的connect
- UDP编程中的connect
- UDP编程中的connect
- UDP编程中的connect
- socket编程中的connect
- UDP编程中的connect(zt)
- linux socket编程 udp connect例子
- UDP socket编程中使用connect
- UDP中的Connect
- UDP中的Connect
- UDP中的Connect
- UDP中的Connect
- UDP中的Connect
- 笔记本有无线网卡却不能搜到wifi
- 通过JAXB把XML文件转成JavaBean
- 总结的不错的Android事件分发介绍
- Java解析XML文档的四种方法详解
- 2.java多线程之Executor类
- UDP SOCKET编程中的connect()
- 程序员面试之葵花宝典
- Linux编程错误处理函数
- haayaGuardV0---2---服务端功能逻辑
- 将一个数组随机打乱
- Intellij mac 快捷键
- 核心语法
- MongoDB整库备份与还原以及单个collection备份、恢复方法
- android xml解析XmlPullParser的使用