UDP中的Connect
来源:互联网 发布:中兴 知乎 编辑:程序博客网 时间:2024/05/19 15:21
标准的udp客户端开了套接口后,一般使用sendto和recvfrom函数来发数据,实际上,udp发送数据有两种方法供大家选用的:
方法一:
socket----->sendto()或recvfrom()
方法二:
socket----->connect()----->send()或recv().(此时sendto,recvfrom仍可用)
从定义可以看出,sendto和recvfrom在收发时指定地址,而send和recv则没有,那么他们的地址是在那里指定的呢,答案就在于connect函数。
在udp编程中,如果你只往一个地址发送,那么你可以使用send和recv,在使用它们之前用connect把它们的目的地址指定一下就可以了。connect函数在udp中就是这个作用,用它来检测udp端口的是否开放的、没有被使用的。
给UDP套接口调用connect,与TCP不同的是:没有三路握手过程。内核只是检查是否存在立即可知的错误(例如一个显然不可达的目的地),记录对端的IP地址和端口号(取自传递给connect的套接口地址结构),然后立即返回到调用进程
对于已连接UDP套接字,与缺省的未连接套接字相比,发生了以下变化:
1. 我们不必使用recvfrom以获悉数据报的发送者,而改用read,recv或recvmsg,在一个已连接UDP套接口上由内核为输入操作返回的数据 报仅仅是那些来自connect所指定协议地址的数据报。目的地为这个已连接UDP套接口的本地协议地址,发源地却不是该套接口早先connect到的协 议地址的数据报,不会投递到该套接口。这样就限制了一个已连接UDP套接口而且仅能与一个对端交换数据报。
2.由已连接的UDP套接口引发的异步错误返回给他们所在的进程。
UDP套接字多次调用connect可以为下列2个目的之一:
1.指定新的IP地址和端口号;
2.断开套接口
EXAMPLE:
server绑定172.25.40.206和10086端口,监听
Client调用Connect时,netstat结果:
udp 0 0 172.25.40.206:32862 172.25.40.206:10086 ESTABLISHED
udp 0 0 172.25.40.206:10086 *:*
Client没有Connect时:
udp 0 0 *:32862 *:*
udp 0 0 172.25.40.206:10086 *:*
方法一:
socket----->sendto()或recvfrom()
方法二:
socket----->connect()----->send()或recv().(此时sendto,recvfrom仍可用)
从定义可以看出,sendto和recvfrom在收发时指定地址,而send和recv则没有,那么他们的地址是在那里指定的呢,答案就在于connect函数。
在udp编程中,如果你只往一个地址发送,那么你可以使用send和recv,在使用它们之前用connect把它们的目的地址指定一下就可以了。connect函数在udp中就是这个作用,用它来检测udp端口的是否开放的、没有被使用的。
给UDP套接口调用connect,与TCP不同的是:没有三路握手过程。内核只是检查是否存在立即可知的错误(例如一个显然不可达的目的地),记录对端的IP地址和端口号(取自传递给connect的套接口地址结构),然后立即返回到调用进程
对于已连接UDP套接字,与缺省的未连接套接字相比,发生了以下变化:
1. 我们不必使用recvfrom以获悉数据报的发送者,而改用read,recv或recvmsg,在一个已连接UDP套接口上由内核为输入操作返回的数据 报仅仅是那些来自connect所指定协议地址的数据报。目的地为这个已连接UDP套接口的本地协议地址,发源地却不是该套接口早先connect到的协 议地址的数据报,不会投递到该套接口。这样就限制了一个已连接UDP套接口而且仅能与一个对端交换数据报。
2.由已连接的UDP套接口引发的异步错误返回给他们所在的进程。
UDP套接字多次调用connect可以为下列2个目的之一:
1.指定新的IP地址和端口号;
2.断开套接口
EXAMPLE:
server绑定172.25.40.206和10086端口,监听
Client调用Connect时,netstat结果:
udp 0 0 172.25.40.206:32862 172.25.40.206:10086 ESTABLISHED
udp 0 0 172.25.40.206:10086 *:*
Client没有Connect时:
udp 0 0 *:32862 *:*
udp 0 0 172.25.40.206:10086 *:*
- UDP编程中的connect
- UDP编程中的connect
- UDP中的Connect
- UDP编程中的connect
- UDP中的Connect
- UDP编程中的connect
- UDP中的Connect
- UDP中的Connect
- UDP中的Connect
- UDP中的Connect
- UDP编程中的connect
- UDP编程中的connect
- UDP中的Connect
- UDP编程中的connect
- udp中的connect()&bind()
- UDP SOCKET编程中的connect()
- UDP编程中的connect(zt)
- UDP SOCKET编程中的connect()
- 第五周实验报告(一)使用默认参数的构造函数
- 第五周实验报告3
- javascript笔记
- StarUML cannot run on Windows7
- QThread与connect
- UDP中的Connect
- python下cx_oracle短连接oracle,报ORA-12520
- session小例
- 分布式处理之Consistent Hashing算法(C++实现)
- [Linux驱动开发] cramfs文件系统制作及移植
- JD Power: iPhone再次摘得北美市场最满意手机桂冠,诺基亚几近垫底
- 第五周实验报告4
- 纽曼 移动硬盘 拆壳方法
- 算法研究之位运算