当前位置: 首页 > news >正文

简述制作网站的主要流程做刷单网站犯法吗

简述制作网站的主要流程,做刷单网站犯法吗,网站建设与运营在线考试,怎样说服公司做网站(꒪ꇴ꒪ )#xff0c;Hello我是祐言QAQ我的博客主页#xff1a;C/C语言#xff0c;数据结构#xff0c;Linux基础#xff0c;ARM开发板#xff0c;网络编程等领域UP#x1f30d;快上#x1f698;#xff0c;一起学习#xff0c;让我们成为一个强大的攻城狮#xff0…(꒪ꇴ꒪ )Hello我是祐言QAQ我的博客主页C/C语言数据结构Linux基础ARM开发板网络编程等领域UP快上一起学习让我们成为一个强大的攻城狮送给自己和读者的一句鸡汤集中起来的意志可以击穿顽石!作者水平很有限如果发现错误请在评论区指正感谢 在计算机网络中UDPUser Datagram Protocol是一种重要的传输层协议与TCPTransmission Control Protocol一样位于 OSI 模型的传输层。但与TCP不同UDP提供了一种无连接、轻量级的数据传输方式适用于需要快速传输数据的应用场景。本文将深入探讨UDP协议的特点、用途以及与TCP的对比。 一、UDP的特点 无连接性UDP不需要在通信前建立连接也不维护连接状态因此它更加轻量级。这使得UDP适用于实时数据传输如音频和视频流。 不可靠性UDP不提供数据包的可靠性传输。这意味着数据包可能会丢失、重复或无序到达目标。因此UDP通常用于那些可以容忍一些数据丢失的应用如实时多媒体流。 高性能由于不需要建立连接和维护状态信息UDP的开销较低具有较高的性能。这使得它成为一种适用于高吞吐量、低延迟的协议。 头部小UDP的头部相对较小只包含源端口、目标端口、长度和校验和等字段这有助于减少数据传输时的开销。 多播和广播UDP支持多播和广播可以同时向多个接收方发送数据包适用于一对多或多对多通信。 二、UDP的用途 UDP在许多应用中发挥着重要作用包括但不限于 实时音视频传输VoIP电话、视频会议和直播流都使用UDP来传输实时音视频数据因为它具有低延迟和快速传输的特性。 DNS查询域名系统DNS使用UDP来快速查询域名解析。 游戏数据传输在线游戏经常使用UDP来传输游戏数据以确保低延迟和实时性。 网络广播UDP用于发送广播消息例如局域网内的设备发现和服务广告。 三、UDP实现服务器与客户端相互通信 在此之前我们已经学习掌握了TCP/IP实现服务器与客户端通信链接我放这里 【网络编程】TCP传输控制协议Transmission Control Protocol_祐言QAQ的博客-CSDN博客 那么现在让我们一起来学习一下UDP如何实现通信。 1.UDP服务器与客户端设计思路 不难看出其中与TCP通信有几个不同点 ①套接字类型 TCP使用 SOCK_STREAM 表示流式套接字这意味着它提供面向连接的、可靠的、基于字节流的通信         UDP使用 SOCK_DGRAM 表示数据报套接字这表明它提供无连接的、不可靠的、基于数据报的通信。 ②通信流程 在TCP中通信需要经过 listen、accept 和 connect 过程其中建立连接是必要的         在UDP中通信是无连接的不需要建立连接因此不需要进行 listen、accept 和 connect 步骤。 ③收发数据的函数 在TCP中通常使用 recv 和 send 函数来进行数据的接收和发送         在UDP中通常使用 recvfrom 和 sendto 函数来进行数据的接收和发送。这些函数需要指定目标地址因为UDP是无连接的每个数据包都需要包含目标地址信息。 2.具体实现代码 udp_server.c #include stdio.h #include sys/socket.h #include netinet/in.h #include arpa/inet.h #include unistd.h #include stdlib.h #include strings.h #include pthread.h #include string.h #include sys/types.h #include sys/stat.h #include fcntl.h// 定义一个结构体用于存储客户端信息 struct Client {struct sockaddr_in addr; // 客户端地址结构体int ser_socket; // 服务器套接字 };// 线程函数用于发送数据 void *send_data(void *arg) {struct Client *cli (struct Client *)arg;char buf[1024];while (1){scanf(%[^\n], buf); // 从用户输入读取数据while (getchar() ! \n);// 发送数据到客户端sendto(cli-ser_socket, buf, strlen(buf), 0, (struct sockaddr *)(cli-addr), sizeof(cli-addr));} }int main(int argc, char const *argv[]) {if (argc ! 2){printf(./server port\n);return -1;}// 创建套接字socketint ser_socket socket(AF_INET, SOCK_DGRAM, 0);if (ser_socket -1){perror(socket);return -1;}// 设置套接字属性SO_REUSEADDR 允许地址端口重用int on 1;if (setsockopt(ser_socket, SOL_SOCKET, SO_REUSEADDR, on, sizeof(on)) -1){perror(setsockopt);return -1;}// 初始化地址结构体struct sockaddr_in addr;addr.sin_family AF_INET; // 地址簇addr.sin_port atoi(argv[1]); // 端口一般以传参的传进来// addr.sin_addr.s_addr inet_addr(192.168.1.128); // IP地址addr.sin_addr.s_addr htonl(INADDR_ANY); // 用特殊的0.0.0.0这个IP来绑定本机IP地址// bind 绑定IP跟PORTint b bind(ser_socket, (struct sockaddr *)addr, sizeof(struct sockaddr_in));if(b -1){perror(bind);return -1;}printf(绑定成功\n);struct sockaddr_in c_addr; // IPV4地址结构体int addrlen sizeof(c_addr);char buf[1024];// 接收客户端的第一条消息recvfrom(ser_socket, buf, sizeof(buf), 0, (struct sockaddr *)c_addr, addrlen);printf([%s] [%d]%s\n, inet_ntoa(c_addr.sin_addr), c_addr.sin_port, buf);struct Client cli;cli.addr c_addr;cli.ser_socket ser_socket;// 创建一个线程用来发送数据pthread_t pid;pthread_create(pid, NULL, send_data, cli);// 接收/发送数据 recvfrom/sendtowhile(1){bzero(buf, sizeof(buf));// 每接收一条客户端发送的信息保存一次客户端的IPPORTrecvfrom(ser_socket, buf, sizeof(buf), 0, (struct sockaddr *)c_addr, addrlen);// 第一次接收创建线程发送数据将套接字对方的IP地址传递给线程任务函数printf([%s] [%d]%s\n, inet_ntoa(c_addr.sin_addr), c_addr.sin_port, buf);}// 关闭套接字closeclose(ser_socket);return 0; }udp_client.c #include stdio.h #include sys/socket.h #include netinet/in.h #include arpa/inet.h #include unistd.h #include stdlib.h #include strings.h #include pthread.h #include string.h #include sys/types.h #include sys/stat.h #include fcntl.h// 线程函数用于接收数据 void *recv_data(void *arg) {int cli_socket *(int *)arg;struct sockaddr_in c_addr;int addrlen sizeof(c_addr);char buf[1024];while(1){bzero(buf, sizeof(buf));// 每接收一条客户端发送的信息保存一次客户端的IPPORTrecvfrom(cli_socket, buf, sizeof(buf), 0, (struct sockaddr *)c_addr, addrlen);printf([%s] [%d]%s\n, inet_ntoa(c_addr.sin_addr), c_addr.sin_port, buf);} }int main(int argc, char const *argv[]) {if (argc ! 3){printf(./client ip port\n);return -1;}// (1) 创建套接字socketint cli_socket socket(AF_INET, SOCK_DGRAM, 0);if (cli_socket -1){perror(socket);return -1;}// (2) 初始化地址结构体服务器的struct sockaddr_in addr;addr.sin_family AF_INET; // 地址簇addr.sin_port atoi(argv[2]); // 服务器端的端口一般以传参的传进来addr.sin_addr.s_addr inet_addr(argv[1]); // 服务器端的IP地址一般以传参的传进来// 先发一条上线的消息给serverchar buf[1024] on line;sendto(cli_socket, buf, strlen(buf), 0, (struct sockaddr *)addr, sizeof(addr));// 创建线程用来接收数据pthread_t pid;pthread_create(pid, NULL, recv_data, cli_socket);// (3) 发送数据while(1){scanf(%[^\n], buf); // 从用户输入读取数据while(getchar()!\n);// 发送数据bufsendto(cli_socket, buf, strlen(buf), 0, (struct sockaddr *)addr, sizeof(addr));}// (5) 关闭套接字closeclose(cli_socket);return 0; }四、UDP套接字获取和设置 在UDP套接字编程中你可以使用 getsockopt 和 setsockopt 函数来获取和设置套接字的属性。以下是一些常见的UDP套接字属性以及如何使用这两个函数来处理它们 获取套接字属性使用 getsockopt 函数 SO_RCVBUF 和 SO_SNDBUF 功能获取套接字的接收缓冲区和发送缓冲区的大小。示例代码 int buffer_size; socklen_t optlen sizeof(buffer_size); getsockopt(socket_fd, SOL_SOCKET, SO_RCVBUF, buffer_size, optlen); // 现在 buffer_size 中包含接收缓冲区的大小SO_RCVTIMEO 和 SO_SNDTIMEO 功能获取套接字的接收超时时间和发送超时时间。示例代码 struct timeval timeout; socklen_t optlen sizeof(timeout); getsockopt(socket_fd, SOL_SOCKET, SO_RCVTIMEO, timeout, optlen); // 现在 timeout 中包含接收超时时间设置套接字属性使用 setsockopt 函数 SO_RCVBUF 和 SO_SNDBUF 功能设置套接字的接收缓冲区和发送缓冲区的大小。示例代码 int buffer_size 8192; // 设置缓冲区大小 setsockopt(socket_fd, SOL_SOCKET, SO_RCVBUF, buffer_size, sizeof(buffer_size));SO_RCVTIMEO 和 SO_SNDTIMEO 功能设置套接字的接收超时时间和发送超时时间。示例代码 struct timeval timeout; timeout.tv_sec 5; // 设置超时时间为5秒 timeout.tv_usec 0; setsockopt(socket_fd, SOL_SOCKET, SO_RCVTIMEO, timeout, sizeof(timeout));这些是一些常见的UDP套接字属性设置选项。可以根据需要使用 getsockopt 和 setsockopt 函数来获取和设置套接字的其他属性具体选项取决于你的应用程序的需求。套接字属性设置允许你自定义套接字的行为以满足不同的网络通信需求。在上面的服务端与客户端通信中也有用到一些示例。 五、与TCP的对比 UDP和TCP是两种不同的传输协议它们在以下方面有所不同 连接性UDP无连接TCP面向连接。 可靠性UDP不提供可靠性传输TCP提供可靠性传输。 开销UDP开销较低TCP开销较高。 适用场景UDP适用于需要快速传输但可以容忍一些数据丢失的应用而TCP适用于需要确保数据完整性和可靠性的应用。 六、总结 UDP协议在网络通信中扮演着重要的角色尤其是在需要实时性和低延迟的应用中。虽然它不提供可靠性传输但在正确的应用场景下UDP是一个强大的工具能够满足快速数据传输的需求。了解UDP的特点和用途有助于网络工程师更好地选择合适的协议来满足应用程序的需求。 更多C/C语言、Linux系统、数据结构和ARM板实战相关文章关注专栏 手撕C语言 玩转linux 脚踢数据结构 系统、网络编程 探索C 6818ARM开发板实战 写在最后 今天的分享就到这啦~觉得博主写的还不错的烦劳 一键三连喔~感谢关注
http://www.hkea.cn/news/14383545/

相关文章:

  • 天津网站设计制作公司建设网站要注意什么
  • 互动网站设计网站界面ui设计
  • 手机网站设计企业平面设计网站排行榜
  • 怎么管理好自己的网站百度推广优化是什么?
  • 站外推广厦门网页
  • 蓬业东莞网站建设技术支持商丘网站制作与设计
  • 郑州网站建设案例最新热点新闻事件素材
  • 专门做茶叶的网站建设电影网站视频素材
  • 广州网站建设规划网页设计与制作 培训
  • 网站目录管理模版企业网站排名怎么优化
  • 旅游网站的设计的前提网站制作系统哪个好
  • 推荐邯郸网站建设网站报备
  • 免费网站建设软件学生怎么做网站
  • 深圳蚂蚁网络网站建设关键词点击排名软件
  • 深圳做网站哪里最好163企业邮箱登录注册入口
  • 用focusky做h5微网站网站推广网站策划
  • 厦门网站制作收费京东商城网上购物app下载
  • 免费网站空间哪个网站可以免费下载电视剧看
  • 专业简历制作网站推荐百度竞价系统
  • 上海房地产网站官网怎么做盗版视频网站
  • ui设计 接单网站wordpress 批量换
  • 做投资的网站好做网页要钱吗
  • 金湖建设局网站唐山专业做网站公司
  • 做网站的公司 洛阳每平每家设计家官网
  • 外企网站建设公司厨之梦进口食品网站谁做的
  • 上海网站推竞价外包
  • 2017年做啥网站致富渭南网站建设哪里便宜
  • 地方门户网站发展趋势东莞网站建设推广咨询平台
  • 怀化网站建设公司网站SEO建设
  • 苏州网站制作开发公司商品门户网站解决方案