![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程
文章平均质量分 86
SNAKEpc12138
这个作者很懒,什么都没留下…
展开
-
网络编程--多线程服务器客户端
虽然使用互斥量实现了简单的多线程服务器/客户端,但也只是借此熟悉下线程及线程同步相关的接口,可以明显的看到效率还是比较低下的。要想使用高效的Windows服务器客户端,可以使用IOCP完成端口实现。原创 2023-05-30 21:49:45 · 708 阅读 · 2 评论 -
网络编程--IOCP完成端口
在此之前,我们介绍了Windows网络编程中常见的几种IO模型及应用,相信后续在实际工作中碰到也能了解其实现,本文介绍的最后一种IO模型–IOCP完成端口在Windows网络编程中极为常见,因此需熟练掌握应用,本文的最后也简单分析了一下几种IO模型的差异以加深对几种IO模型的理解。至此,网络编程的学习将告一段落,这段的学习中均使用简单的回声服务器作为示例介绍,在更为复杂的工作环境中,应学会在公司现有框架中变通。原创 2023-05-22 12:20:14 · 614 阅读 · 0 评论 -
网络编程--纯重叠IO方式实现回声服务器
基于重叠IO模型,实现了一个简单的重叠IO回声服务器/客户端,以加深使用WSASend和WSARecv函数中LPWSAOVERLAPPED参数和Competion Routine方式处理IO完成的理解。原创 2023-05-22 10:53:58 · 563 阅读 · 0 评论 -
网络编程--重叠IO模型
一文中介绍的异步通知IO模型属于通知IO模型,类似的一文中介绍的IO复用也属于通信IO模型。何谓通知IO模型,就是IO完成给通知开发人员,某个IO操作已完成,根据通知的时机,又分为为同步通知IO模型(select实现IO复用)和异步通知IO模型(WSAEventSelect实现异步通知IO模型)。这里再回看前两种模型实现,发现都是使用的同步的IO函数send和recv,只是在该调用的时机(IO完成)调用。而本章则会介绍以异步方式处理IO,注意区别于前两种通知模型及同步IO函数。原创 2023-05-18 18:00:31 · 629 阅读 · 0 评论 -
网络编程--异步通知IO模型
同select实现IO复用一样,WSAEventSelect函数是实现异步通知IO模型的关键,因此也需熟练掌握。上文比较了通过select使用的同步通知IO模型和WSAEventSelect函数实现异步通知IO模型的差异及优缺点,同样也介绍了WSAEventSelect的相关扩展函数及使用步骤。最后给出了基于异步通知IO模型实现的回声服务器代码,可在实际工作中按需调整。原创 2023-05-18 16:13:27 · 708 阅读 · 0 评论 -
网络编程--select实现IO复用
select函数是实现IO复用服务器的关键,因此需要熟练掌握。这里也总结了select函数的使用步骤及示例模板,后续也可参考在实际开发时使用。步骤:①设置套接字②设置监视范围③设置超时④调用select函数⑤查看调用结果。原创 2023-05-18 11:48:04 · 699 阅读 · 0 评论 -
网络编程七--半关闭
此前的closesocket函数,调用后就会完全断开连接。完全断开后,不仅无法传输数据,也无法再接收数据。在某些场景下,完全断开连接可能会有些问题。若有两台主机正在进行双向通信。主机A发送完最后的数据后,调用closesocket函数断开连接(这里会将该套接字的输出缓存的数据全部发送出去),之后主机A无法再接收主机B正在传输的数据(实际上是完全无法调用与接收数据相关的函数)。为了解决这类问题,“只关闭一部分数据交换中使用的流(Half-close)”的方法应运而生。原创 2023-05-11 15:01:03 · 102 阅读 · 0 评论 -
网络编程六--UDP服务器客户端
通过一个简单UDP服务器/客户端示例理解UDP的特性、开发步骤及开发过程中的优化处理原创 2023-05-10 17:55:16 · 2517 阅读 · 0 评论 -
网络编程五--自定义应用层协议
本章通过一个简单的运算示例介绍如何自定义应用层协议,所谓的协议就是为了完成数据交换而定好的约定,只不过这里的约定应用在了应用层,即输入前(客户端的应用层)、输出后(服务器端的应用层)的数据的处理方式。原创 2023-05-08 21:18:13 · 826 阅读 · 0 评论 -
网络编程--协议、协议族、地址族
通过socket函数声明展开了解协议族、数据传输方式以及最终协议的相关知识,此外还学习了IP的分类规则,知道IP和端口分别标识计算机和套接字,以及初始化时的地址的初始化相关的API说明。为了统一数据传输时的解析,这里引出了主机字节顺序和网络字节顺序,知道数据统一使用网络字节顺序传输,并介绍了主机字节顺序和网络字节顺序相互转换的API接口。原创 2023-04-25 18:03:00 · 1070 阅读 · 0 评论 -
网络编程二、回声服务器
实现一个简单的回声服务器及客户端.通过回声服务器/客户端实例,我们更加深刻的理解了TCP传输数据不存在边界的特性,即recv函数和send函数的调用次数并无太大意义,因为每次recv都会获取输入缓冲中的所有内容。也更加深刻理解了recv和send函数的应用,这里通过send和recv函数的返回值来实现完美的回声客户端。原创 2023-04-24 17:49:46 · 83 阅读 · 0 评论 -
网络编程一
常用Windows下的APIWindows系统下定义在<winsock2.h>头文件, 同时需要加载套接字库。#include <WinSock2.h>#pragma comment(lib, "ws2_32.lib")加载套接字库WSAStartup加载套接字库WSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0){ return -1;}创建套接字socket函数原型:in原创 2021-11-04 22:17:59 · 188 阅读 · 0 评论