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

新闻写作网站做网站的介绍

新闻写作网站,做网站的介绍,网站建设费如何入账,wordpress如何改成中文字体0voice第一课 https://github.com/0voice 今日学习#xff1a;网络通信IO 网络通信的核心是通过系统提供的socket套接字实现的。socket和c语言中文件操作的本质类似#xff0c;在c语言中#xff0c;通过fopen、fclose、fread、fwrite实现了对文件的操作#xff0c;socket…0voice第一课 https://github.com/0voice 今日学习网络通信IO 网络通信的核心是通过系统提供的socket套接字实现的。socket和c语言中文件操作的本质类似在c语言中通过fopen、fclose、fread、fwrite实现了对文件的操作socket类似于fopen函数创建一个文件即套接字然后可以往该“文件”中写入相关的内容。socket包含三个参数分别是协议族、文件类型和协议返回值为fd类似于fopen中的文件指针通过fd对套接字进行io操作。 #includesys/socket.h //socket所需要的头文件sockfd socket(AF_INET, SOCK_STREAM, 0); 创建了socket后需要将该socket和对应的地址进行绑定通信的本质在于不同的地址之间信息的传送socket提供了一个接口现在还需要该接口和某个具体的网络地址进行绑定才可以实现通信。 #includenetinet/in.h //socketaddr_in 需要的头文件// 地址需要专用的结构体 struct socketaddr_in 来定义 // 其具体结构如下struct sockaddr_in { sin_family; //协议族sin_port; //端口struct in_addr sin_addr; //IP地址 } struch in_addr{s_addr; }//在服务器端建立一个socketadd类型的地址 struct socketaddr_in server_addr; server_addr.family AF_INET; //使用ipv4协议族 server_addr.sin_addr.s_addr htonl(INADDR_ANY); //自动获取本机的IP地址并使用htonl转换格式 server_addr.sin_port htons(2000); //要绑定的端口号使用htons转换 获取到了通信地址和socket的fd后需要将两个进行绑定。 //bind函数 //三个参数// sockfd : 创建socket后反回的fd号即要绑定的“文件” // servaddr IP地址的指针 注意要把sockaddr_in的指针类型转换为socketaddr指针类型 //size IP地址的大小该参数可以用来判断属于哪个协议族。bind(sockfd, servaddr, size)绑定之后就可以监听该端口的信息了使用listen函数 进入listen之后就可以被连接了 //sockfd: 绑定后监听端口的对应的fd //backlog确定连接请求队列的长度达到该数量后新的请求不再接受。 listen(sockfd 10) 连接之后可以收到客户端的发送的信息但是无法显示出来所以需要accept函数--用于接收客户端发送的信息 //建立客户端 //返回的新套接字是专门用于和当前连接的客户端通信的 //所有后续的读写操作都需要通过这个新的套接字进行而原来的监听套接字sockfd继续监听新的连接请求。struct sockaddr_in clientaddr; int clientfd accept(sockfd, (struct sockaddr *)clientaddr, sizeof(clientaddr));accept是阻塞的即它会一直等待直到有客户端连接请求。如果没有请求程序将停留在此函数调用//通过recv()函数来接受信息 //buf指向接收缓冲区的指针用于存储从套接字读取到的数据 //len接收缓冲区的大小以字节为单位。recv() 会尝试最多读取 len 字节的数据 recv(int sockfd, void *buf, size_t len, int flags); //返回值 //返回实际接收到的字节数ssize_t即读取的数据大小。 //如果返回值为 0表示连接已关闭对于流式套接字。 注意sockfd 和 clientfd 的区别只要bind之后只有一个sockfd代表监听的端口。 但是被监听的端口可能同时有很多客户端发送信息对于每个服务端都需要使用accept来重新建立一个socket套接字来传送信息之后可以基于此fd进行recv和send操作。 int client_fd accept(sockfd, (struct sockaddr *)clientaddr, len); printf(accept finished!);char buffer[1024]; int count recv(client_fd, buffer, sizeof(buffer), 0); printf(recv: %s, buffer); count send(client_fd, buffer, count, 0); print(send: %d, count); recv更像是c语言文件操作中的fread而send更像是fwrite函数。 总结 网络io操作的流程如下 首先建立socket的fd号将该fd号与地址和端口进行bind 服务器端可以根据此fd号对这个端口进行listen监听并维系一个连接队列 服务器端使用accept与不同的客户端进行连接连接成功后生成新的socket的fd号根据此fd号对其进行读/写即recv和send操作。 一些心得 今天的课程涉及到了计算机网络里tcp相关的内容操作系统中阻塞相关的内容。这些知识本身并不陌生之前在课堂也都学习过知识点都理解只是上手代码由于不是特别熟悉还是有点吃力的需要每一个函数都要去查包括参数、返回值之类的计划2小时学完其实花了很久来上手大概四小时左右代码的实现看了两遍结合gpt搞懂了。虽然时间久还是很有成就感的。希望越来越熟悉加快学习的速度。
http://www.w-s-a.com/news/951553/

相关文章:

  • 同城网站开发实用网站模板
  • 郑州做网站哪家公司好国外购买空间的网站有哪些
  • 资讯cms网站有那些餐饮品牌策划设计公司
  • 网站策划选题网站布局优化
  • 网站建设3000字wordpress 微信 主题制作
  • 代做寄生虫网站网站菜单效果
  • 网站备案为什么这么慢目录更新 wordpress
  • 视频在线制作网站Wordpress 外链图片6
  • 网站域名后缀有什么用网站建设的投资预算怎么写
  • 化妆品网站建设网站惠州网站关键字优化
  • 保定网站制作企业下载天眼查企业查询官网
  • 中山企业网站建设公司制作一个景点的网站
  • 连云港集团网站建设株洲建设网站
  • 做运动鞋评价的网站南山做网站联系电话
  • 网站开发公众号开发海南做公司网站
  • 论企业网站建设的必要性微信小程序做一个多少钱
  • 网站制作价格是多少元上海市中小企业服务中心
  • 网站建设管理人员济宁网站建设top
  • 桂林网站建设桂林网站的元素有哪些
  • 广东网站开发推荐网页制作个人简历模板教程
  • e建网保定百度seo公司
  • 网站建设中html代码网络培训课堂app
  • 无锡做网站seo自己做的网站如何上传网上
  • 园林景观网站模板小白怎么做跨境电商
  • 找第三方做网站 需要注意企业网站带数据库
  • 北京南站到北京站flash网站制作单选框和复选框ui组件
  • 网站建设核电集团网站设计案例
  • 宝塔做的网站能不能访问上海的广告公司网站建设
  • 网站会员系统方案新能源网站建设哪家好
  • 全球网站域名域名被墙查询