【windows socket+UDPserverclient】

Windows Socket+UDPserverclient

Winsock是 Windows下套接字标准

         

         1.UDP socket编程:

         UDP(用户数据报协议)是一个无连接。不可靠的传输数据,其特点是简单,快捷。相比与TCP,UDP不须要建立连接(不需connect、accept函数),数据发送接收之后,不须要终止连接。基于UDP的程序,避免了TCP执行的开销,在效率与速度上具有更好的表现。

         UDP是无连接的,可能会有数据的丢失,延迟。这些须要应用程序自己处理。

         

         2.UDP基本函数:

          

创建socket:

         SOCKET  socket (int af, int type, int protocol);

         第一个參数af:  表示族地址。网络编程一般使用AF_INET宏。

         第二个參数type:  表示连接类型,TCP可选面向连接SOCK_STREAM。UDP数据报SOCK_DGRAM。

         第三个參数protocol:  表示协议,在使用AF_INET族地址UDP连接,设为IPPROTO_UDP。

绑定socket:

         int  bind(SOCKET s, const struct sockaddr *saddr,int namelen);

         第一个參数:  须要绑定的socket。

         第二个參数:  相应AF_INET,使用struct sockaddr_in包括协议。IP,port等信息。

         第三个參数:  相应AF_INET,使用struct sockaddr_in结构大小。

         该函数将socket与协议,IP地址。Portport号绑定起来。相对于给socket“命名”唯一的标识。这样其它的进程就能够通过这个标识找到这个socket。

发送数据:

         int  sendto(SOCKET s, const char
 *buf,  int len,

                              int flags, const struct sockaddr  *to, int tolen);

第一个參数:  socket为对方的socket。

         第二个參数:  发送数据的缓冲区。

         第三个參数:  数据缓冲区大小。

         第四个參数:  紧急状态,一般这为0。

         第五个參数:  可选。相应AF_INET,对方IP。port等socket地址标识sockaddr_in。

         第六个參数:  可选,相应AF_INET,使用sockaddr_in结构大小。

         该函数用于UDP发送数据。

接收数据:

         int  recvfrom(SOCKET s, char
*buf, int len, 

                                  int flags, struct sockaddr *from, int *fromlen );

第一个參数:  socket为对方的socket。

         第二个參数:  接收数据的缓冲区。

         第三个參数:  数据缓冲区大小。

         第四个參数:  紧急状态。一般这为0。

         第五个參数:  可选。相应AF_INET。返回对方IP。port等socket地址标识sockaddr_in。

         第六个參数:  可选,相应AF_INET,使用sockaddr_in结构大小。

         该函数用于UDP接收数据。

绑定socket:

         int  bind(SOCKET s, const struct sockaddr *saddr,int namelen);

         第一个參数:  须要绑定的socket。

         第二个參数:  相应AF_INET,使用struct sockaddr_in包括协议,IP,port等信息。

         第三个參数:  相应AF_INET。使用struct sockaddr_in结构大小。

         该函数将socket与协议,IP,port号绑定起来,相对于给socket“命名”唯一的标识。这样其它的进程就能够通过这个标识找到这个socket。

关闭套接字:

          int  closesocket(SOCKET s);

          參数为socket。

          该函数用于关闭套接字。

3.牛刀小试:

          先在VC6.0执行server程序,再打开一个VC6.0执行client程序:

          UDPseverserver等待来自client的信息。收到信息后打印出来,然后向client发送如今的时间。

          UDPclient客户端向server发送一个“Hello,server!”信息,然后接收来自server的时间信息并打印,反复三次。

执行效果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbG92ZWNvZGVsZXNz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

UDPclient程序:

UDPserver程序:

时间: 2024-10-06 00:31:23

【windows socket+UDPserverclient】的相关文章

【Windows socket+IP+UDP+TCP】网络基础

Windows Socket+网络 Winsock是 Windows下套接字标准.          Winsock 编程分为UDP[Windows socket + UDP],TCP[Windows socket + TCP]编程.Windows socket 建立在网络基础之上,UDP编程採用用户数据报协议(User Datagram Protocol ,UDP),TCP编程採用传输控制协议(Transmission Control Protocol,TCP).UDP.TCP不同的特性.适应

【Windows socket+IP+UDP+TCP】

Windows Socket+网络 Winsock是 Windows下套接字标准.          Winsock 编程分为UDP[Windows socket + UDP],TCP[Windows socket + TCP]编程.Windows socket 建立在网络基础之上,UDP编程采用用户数据报协议(User Datagram Protocol ,UDP),TCP编程采用传输控制协议(Transmission Control Protocol,TCP).UDP,TCP不同的特性,适应

【windows socket+HTTP服务器客户端】

Windows Socket+HTTP服务器客户端 Winsock是 Windows下套接字标准.                 1.HTTP协议:          HTTP是基于客户端/服务器的请求,响应协议.        请求:由客户端向服务器发起,指定了要从服务器获取的资源.请求包含了协议首部,指明了客户端处理能力信息,如可以处理的文件类型,支持的语言,编码方式等.        响应:服务器收到客户端的请求后,解析这个请求,构造响应,并发送给客户端.响应同样包含了协议首部,指明了服

【windows socket+UDP服务器客户端】

Windows Socket+UDP服务器客户端 Winsock是 Windows下套接字标准.                    1.UDP socket编程:          UDP(用户数据报协议)是一个无连接,不可靠的数据传输,其特点是简单,快捷.相比与TCP,UDP不需要建立连接(不需connect.accept函数),数据发送接收之后,不需要终止连接.基于UDP的程序,避免了TCP运行的开销,在效率与速度上具有更好的表现.          UDP是无连接的,可能会有数据的丢失

【windows socket编程+服务器客户端】

Windows Socket编程与服务器客户端示例 Winsock是 Windows下套接字标准. Socket套接字基于计算机网络,提供同一系统上不同进程或由局域网连接在一起的不同机器上的进程间通讯功能.如下图: 套接字通过IP地址,Port端口号标识,通过这个标识可以在整个局域网定位一个套接字,通过套接字进程便可以相互传输数据.如:进程A与进程B之间欲通过套接字通信,首先进程A创建一个有IP地址,端口号唯一标识的套接字,进程B同样创建一个有IP地址,端口号唯一标识的套接字,进程A,B便可以通

【windows核心编程】DLL相关(2)

关于DLL的延迟加载 延迟加载DLL,使用的是隐式加载方式,当为exe使用的DLL指定为延迟加载的时候,连接器会将exe的[导入段]中去除该DLL的相关信息,同时在exe中嵌入一个新的[延迟加载段]表示要从该DLL中导入哪些函数. 通过让对延迟加载函数的调用跳转到delayimp.lib中的__delayLoadHelper2函数,来完成对延迟加载的DLL的解析. 当exe中第一次调用了一个延迟加载的DLL中的某个导出函数时,加载器才会将该DLL加载到进程地址空间中.需要注意的是:虽然此时已经加

【windows核心编程】DLL相关

DLL相关的东西 1.DLL的加载方式 隐式: #pragma comment(lib, "XX.lib"); 编译器去查找名为XX.dll的DLL,除了名字相同,该DLL和该LIB的GUID也相同. 显式: HINSTANCE   hInst = LoadLibrary(TEXT("XX.dll")); if(NULL == hInst)  retrun; HINSTANCE hInst = LoadLibrary(TEXT("XX.dll")

【Windows 10 IoT】为Win10 IoT镜像添加默认应用(树莓派)

[Windows 10 IoT]为Win10 IoT镜像添加默认应用(树莓派) 在Windows 10 IoT应用程序开发好之后,一般通过IoT WebManagement或者直接用vs将应用部署上去.并且执行命令iotstartup.exe add headed/headless AppxID,将应用设置为开机启动.但是,如果想基于一个开发板,量产某种硬件设备,这种方式肯定是不可行的. 我们会想到,是否可以将我们的应用直接打包到镜像中,并设置成为开机自启的默认应用呢?当然可以. 基本原理是这样

【windows核心编程】使用远程线程注入DLL

前言 该技术是指通过在[目标进程]中创建一个[远程线程]来达到注入的目的. 创建的[远程线程]函数为LoadLibrary, 线程函数的参数为DLL名字, 想要做的工作在DLL中编写.  示意图如下:  相关API 1.创建远程线程 //该函数除了第一个参数为目标进程句柄外 //其他参数均和CreateThread一样 HANDLE hThread = CreateRemoteThread( __in HANDLE hProcess, //目标进程句柄 __in_opt LPSECURITY_A