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

Windows Socket+UDP服务器客户端

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,端口等信息。

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

         该函数将socket与协议,IP地址,Port端口号绑定起来,相对于给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,端口等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,端口等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,端口等信息。

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

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

关闭套接字:

          int  closesocket(SOCKET s);

          参数为socket。

          该函数用于关闭套接字。

3.牛刀小试:

          先在VC6.0运行服务器程序,再打开一个VC6.0运行客户端程序:

          UDPsever服务器等待来自客户端的信息,收到信息后打印出来,然后向客户端发送现在的时间。

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

运行效果:

UDP客户端程序:

UDP服务器程序:

【windows socket+UDP服务器客户端】,布布扣,bubuko.com

时间: 2024-10-13 18:30:31

【windows socket+UDP服务器客户端】的相关文章

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

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

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

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

Java 利用 Socket 实现服务器客户端聊天

Socket是网络编程中最基本的通信接口,常用的网络辅助类,比如URL等之类,其底层还是基于Socket来实现的. 而Socket,形象来说,就是连接通信的两端,比如这样 S<==>S,中间的通道就是网络了,而简单地利用Socket,我们就可以来实现一个简单的聊天功能 具体效果看下图: 这只是在本地中试用的效果,如果加上UI界面,其实就可以做成一个聊天的小应用了. 1. Server 端主要是利用ServerSocket的accept方法来等待客户端的连接,如果客户一直没有连接,则会在这里等待

windows下UDP服务器和客户端的实现

UDP是面向非连接的协议,因此在实现UDP服务器时,服务器不用总是处于监听状态.可以直接收发数据. 服务器端 1.初始化 WASStartup ( ... ) 2.创建Socket s = socket ( .. ) 3.绑定 bind( .. ) 4.收发数据 recvfrom( .. ) sendto(..) 5.关闭连接,释放资源 closesocket(..) WSACleanup() 客户端 // 无需绑定 1.初始化 WASStartup ( ... ) 2.创建Socket s =

socket编程:简单UDP服务器/客户端编程

对于之前的TCP协议而言,他是可靠的字节流传输,而在socket编程中,在不需要保证数据传输正确安全的情况下.或者由用户自己完成传输确认情况/服务端客户端自己实现数据传输.套接字编程也提供了UDP协议的方法. 基于UDP(不是面向连接)的socket编程,分为客户端和服务器端. 客户端的流程如下: (1)创建套接字(socket) (2)和服务器端进行通信(sendto) (3)关闭套接字 因为在socket编程中,UDP是针对数据报的数据传输,所以socket专门定义了UDP所使用的函数接口.

UDP服务器/客户端代码示例

UDP服务器代码: 1 #include <errno.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #include <sys/types.h> 5 #include <sys/socket.h> 6 #include <netinet/in.h> 7 #include <arpa/inet.h> 8 #include <iostream> 9 10 usi

Python Socket Programming 服务器/客户端

基于UDP/TCP的套接字编程demo UDP 客户端/服务器 一个简单的基于UDP协议的客户端和服务器应用的进程通信. 逻辑: 客户端会给服务器发送小写的英文字母,服务器接受后,把它转化成大写再返回给客户端,客户端输出这组数字.由于Python3已经明确区分了str类和bytes类,因此发送的是字节. UDP服务器: from socket import * udp_server_socket = socket(AF_INET, SOCK_DGRAM) udp_server_port = 96

socket本地模拟UDP 服务器+客户端(三)

UDP: TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据.相对TCP,UDP则是面向无连接的协议. 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包.但是,能不能到达就不知道了. 虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快,对于不要求可靠到达的数据,就可以使用UDP协议. 服务端程序: # 1 创建套接字,并绑定到当地地址 socket,bing # 2 直接接收数据从buffer.Recvfrom(),这个函数接受到数据,和#s

socket——UDP服务器

UDP在socket编程中和TCP的不同 UDP是无连接的传输,因此并不需要建立连接,不需要监听是否有客户端发送连接请求(具体到socket编程中即UDP不需要listen()和accept()) UDP采用面向数据报方式(socket()的第二个参数是SOCK_DGRAM) UDP可能会丢包,也不保证数据顺序性(QQ上有时候消息在发送端和接收端的顺序不一样) UDP收发数据用sendto/recvfrom函数,每次sendto/recvfrom均需指定地址信息(这一点TCP服务器中在conne