UDP中的Connect
来源:互联网 发布:lego ev3编程中文下载 编辑:程序博客网 时间:2024/05/17 04:51
标准的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 *:*
方法一:
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 *:*
转载自:http://blog.csdn.net/butterflydog/article/details/7375057
0 0
- 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()
- Linux中chroot与pivot_root的区别
- cocos2d-x知识巩固-基础篇(2)
- 001_024 Python 让某些字符串大小写不敏感 如比较和查询不敏感 其他敏感
- 分页代码及用法
- R语言学习笔记——读 bigmemory 文档
- UDP中的Connect
- 哈夫曼编码压缩,解压,压缩比,编码表,储存到文件
- Leetcode--3Sum
- sed awk grep 正则表达式
- 算法概论 思维导图
- 如何在GitHub使用高亮语法
- 排列组合 从n个自然数中取出r个数的组合
- QT开发之旅四邮件发送工具
- Spring学习