使用C++调用Socket接口实现简易TCP服务器

本人是一名电子信息工程专业的大xio生;在用stm32玩了几个项目以后感觉;哦,这个世界尽在我手,统治世界指日可待,可是在远程操控单片机器件的时候碰到了问题——网络调试蓝牙调试助手使用起来太鸡肋惹;为了实现控制单片机的方便以便于早日统治世界;我学废了使用TCP协议(准确来说就会一个socket接口)来更加“方便”地控制单片机;

TCP协议是什么

度娘爱老虎油

使用C++调用Socket接口实现简易TCP服务器
首先从通俗情况下来讲我们要正常完成给小姐姐打电话的过程,小姐姐的手机那必须得在信号范围内对不对,我们在使用socket操作的第一步就是打开网络库;

其次小姐姐的手机里面要装的电话卡就是我要打的电话号码对应的那一张,这里我们把电话号码想象成为IP地址和端口,这里就对应socket里面的socket绑定IP和端口的操作;

手机能够随时接电话,那么手机的cpu一定开启了对电话卡进行监听的操作,这里就对应socket的监听操作了;

当我鼓起勇气打过去,小姐姐接到了电话,此时就对应socket的接受连接操作了,在我没有打电话过去的时候,小姐姐的手机是需要处于等待接收电话的状态,这样我们打过去电话,小姐姐的手机才能立马有反应(小姐姐接不接就是另外一回事了);

接下来实现小姐姐和我对话,小姐姐很高冷,只有我在和她说过话以后她才会吱一声,这里我们把我给小姐姐说的话当作请求,她回过来的话作为回应;这就实现了TCP的主机和客户端的交互过程;
最后我反应过来了,小丑原来是我自己,我挂断了电话,小姐姐那边也挂断了电话,对应的就是socket的关闭操作。

使用C++调用Socket接口实现简易TCP服务器

代码实现

正题来惹;我们咋个用代码来实现的嘞;
首先,我们需要打开网络库,这样我们对应的函数才能开始使用哦,WSAStartup就是为了向操作系统说明,我们要用哪个库文件,让该库文件与当前的应用程序绑定,从而就可以调用该版本的socket的各种函数了。

wVersionRequired:
这是一个我们需要的网络库版本号,我们直接用 MAKEWORD(2, 2) 的返回值就好啦;
lpWSAData:
这是一个WSADATA的指针;WSADATA是一个结构体, WSAStartup()函数会将环境的网络库信息存在这个结构体中。
它的返回值为0时,那么就打开成功了
为其他返回值时

使用C++调用Socket接口实现简易TCP服务器

这个函数建立一个协议族为domain、协议类型为type、协议编号为protocol的套接字文件描述符。如果函数调用成功,会返回一个标识这个套接字的文件描述符,失败的时候返回-1;通俗来讲第一个对应的是选择的协议,第二个选择套接字的类型,第三个是选择的协议的类型;这个函数会传出一个soket描述符,通过这个函数就可以创建套接字啦,哟西~

这个函数是绑定IP和端口号的操作

这个函数实现监听的操作,在网络通信中, 客户端通常处于主动的一方, 而服务器则是被动的一方;服务器是被连接的, 所以他要时刻准备着被连接, 所以就需要调用 listen() 来监听,;等着被连接.

accept() 函数的作用就是在已完成连接队列中取出一个已经建立好的连接;通过这个就能实现选择连接对象;在没有链接的时候这个函数会处于阻塞状态;

这个就是从连接对象哪里读取数据过来的操作啦!!!第一个传入变量是accept返回的新的socket描述符,第二个就是我们存储数据的一个字符串数组,第三个变量为数组长度,第四个,就是个0,甭管。

这个和前者大致相同,最后一位0;

使用C++调用Socket接口实现简易TCP服务器

第一行是为了防止

请添加图片描述

电脑端

使用C++调用Socket接口实现简易TCP服务器

这是我第二次写博客,写的不好多多见谅。

来源:weixin_52278836

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月1日
下一篇 2022年4月1日

相关推荐