如何做分公司网站,网站建设与设计开题报告,自己的域名怎么做网站,php语言 网站建设UDP编程模型
1.UDP C/S模型#xff08;代码流程只需要根据以下模型去输入即可#xff09; 2.UDP API
socket int socket(int domain, int type, int protocol); domain: AF_INET 这是大多数用来产生socket的协议#xff0c;使用TCP或UDP来传输#xff0c;用IPv4的地址…UDP编程模型
1.UDP C/S模型代码流程只需要根据以下模型去输入即可 2.UDP API
socket int socket(int domain, int type, int protocol); domain: AF_INET 这是大多数用来产生socket的协议使用TCP或UDP来传输用IPv4的地址 AF_INET6 与上面类似不过是来用IPv6的地址 AF_UNIX 本地协议使用在Unix和Linux系统上一般都是当客户端和服务器在同一台及其上的时候使用 type: SOCK_STREAM 这个协议是按照顺序的、可靠的、数据完整的基于字节流的连接。这是一个使用最多的socket类型这个socket是使用TCP来进行传输。 SOCK_DGRAM 这个协议是无连接的、固定长度的传输调用。该协议是不可靠的使用UDP来进行它的连接。 SOCK_SEQPACKET该协议是双线路的、可靠的连接发送固定长度的数据包进行传输。必须把这个包完整的接受才能进行读取。 SOCK_RAW socket类型提供单一的网络访问这个socket类型使用ICMP公共协议。ping、traceroute使用该协议 SOCK_RDM 这个类型是很少使用的在大部分的操作系统上没有实现它是提供给数据链路层使用不保证数据包的顺序 protocol: 传0 表示使用默认协议。 返回值 成功返回指向新创建的socket的文件描述符失败返回-1设置errno sendto int sendtoint sockfd const void *msgint len, unsigned int flags const struct sockaddr *to int tolen to: 表示目地机的IP地址和端口号信息 tolen: 常常被赋值为sizeofstruct sockaddr。 sendto 函数也返回实际发送的数据字节长度或在出现发送错误时返回1。 recvfrom int recvfromint sockfdvoid *bufint lenunsigned int flagsstruct sockaddr *fromint *fromlen from是一个struct sockaddr类型的变量该变量保存源机的IP地址及端口号。 fromlen: 常置为sizeof struct sockaddr。 当recvfrom返回时fromlen包含实际存入from中的数据字节数。recvfrom函数返回接收到的字节数或当出现错误时返回1并置相应的errno。 3.UDP Server端实现
1socket_udp_server.c
#include socket_udp_server.h
#include socket_tcp_server.h
#include socket_wrap.h
#include ctype.hstatic char ReadBuff[BUFF_SIZE];void vUdpServerTask(){int sfd, n, i;struct sockaddr_in server_addr, client_addr;socklen_t client_addr_len;int optval1;//创建socketsfdSocket(AF_INET, SOCK_DGRAM, 0);setsockopt(sfd,SOL_SOCKET ,SO_BROADCAST,optval,sizeof(optval));//绑定socketserver_addr.sin_family AF_INET;server_addr.sin_port htons(SERVER_PORT);server_addr.sin_addr.s_addr htonl(INADDR_ANY);Bind(sfd, (struct sockaddr *)server_addr, sizeof(server_addr));//处理client_addr_lensizeof(client_addr);while(1){//等待客户端发送数据n Recvfrom(sfd, ReadBuff, BUFF_SIZE, 0, (struct sockaddr *)client_addr, client_addr_len);ReadBuff[n] \0;printf(recv data:%s\r\n,ReadBuff);//进行大小写转换for(i 0; i n; i){ ReadBuff[i] toupper(ReadBuff[i]); }//写回客户端Sendto(sfd, ReadBuff, n, 0, (struct sockaddr *)client_addr, client_addr_len);}}
2socket_udp_server.h
#ifndef _SOCKET_UDP_SERVER_H
#define _SOCKET_UDP_SERVER_Hvoid vUdpServerTask(void);#endif
注意还有一个工具类warp.c上一节已经加入
结果
1UDP支持多个客户端同时连接 2串口显示