UDP服务器也可以使用connect()

news/2024/7/24 12:23:42

    UDP是一个无连接的协议,因此socket函数connect()似乎对UDP是没有意义的,然而事实不是这样。

    一个插口有几个属性,其中包括协议,本地地址/端口,目的地址/端口。

    对于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服务器也可以使用connect(),如上面所述,connect()可以用来指明目的地址/端口;这将导致服务器只接受特定一个主机的请求。


    方法一:

    socket()——>sendto()或recvfrom()

    方法二:

    socket()——>connect()——>send或recv()


文章出处:http://blog.csdn.net/rissonal/archive/2008/08/22/2816690.aspx

 



http://www.niftyadmin.cn/n/1300783.html

相关文章

UDP 服务端与客户端均可以bind()绑定端口, 并且可以使用connect()链接后,使用send()与recv()方法!

测试发现: UDP 服务端与客户端均可以bind()绑定端口,一般使用recvfrom()与sendto() , 但使用connect()链接后,也可以使用send()与recv()方法! UDP服务端 #include<WinSock2.h> #include <Windows.h> #include <stdio.h>#pragma comment(lib, "Ws2…

阿里P7解析“前端开发的难点到底在哪里?”

不同级别的前端面临的难点各不相同&#xff0c;不可一概而论&#xff1b;业务开发的前端难点在于对业务的理解和把控能力&#xff1b;平台开发的前端难点在于产品化的把控和推进能力。 观点1&#xff1a;不同级别的前端面临的难点各不相同&#xff0c;不可一概而论。 其他回答…

vector 中push_back 小测试

小测试&#xff0c;C vector 中push_back 对于指针成员是浅拷贝&#xff0c;数组成员却是新内存然后赋值。 #include <vector> #include <stdio.h> using namespace std;class A { public:char *b;char c[5]; public:A(){printf("A 构造函数&#xff01;…

那些大佬公司的前端面试都喜欢问些什么?

英文原文&#xff1a;http://davidshariff.com/blog/preparing-for-a-front-end-web-development-interview-in-2017/ 在过去的几年里&#xff0c;我在亚马逊和雅虎面试过很多专注于前端开发的 Web 开发者和软件工程师&#xff0c;在这篇文章中&#xff0c;我想分享一些面试技巧…

从新手小白入门MFC框架-黄强-专题视频课程

从新手小白入门MFC框架—806人已学习 课程介绍 微软基础类库&#xff08;英语&#xff1a;Microsoft Foundation Classes&#xff0c;简称MFC&#xff09;是微软公司提供的一个类库&#xff08;class libraries&#xff09;&#xff0c;以C类的形式封装了Windows API&#x…

从0到1构建vueSSR项目之node以及vue-cli3的配置

前言 上一次做了路由的相关配置&#xff0c;原本计划今天要做vuex部分&#xff0c;但是想了想&#xff0c;发现vuex单独的客户端部分穿插解释起来很麻烦&#xff0c;所以今天改做服务端部分。 服务端部分做完&#xff0c;再去做vuex的部分&#xff0c;这样就会很清晰。 vue …

函数中定义静态变量,虽多次调用函数,但只定义一次!!!!

函数中定义静态变量&#xff0c;虽多次调用函数&#xff0c;但只定义一次&#xff01;&#xff01;&#xff01;&#xff01; 少废话&#xff0c;先上代码 #include<iostream> using namespace std;class A { public:A(int a1) :a(a1) {}int a; };//多次调用&#xff…

多线程下vector的安全问题

STL文档说了——vector它不支持多线程,利用以下的代码亲测, 如果是仅仅读取vector中的数据,或者是改变元素的值 多线程没有问题。 如果是添加或删除元素,则多线程肯定出问题,需要自己同步。 #include <windows.h> #include <process.h> #include <vecto…