Socket

Socket是什么?套接字又是什么?

当我们在自己的计算机上运行代码时有没有想过实现两个计算机间的交互呢?有没有想过它其实并不复杂呢?Socket编程就会带领我们打开两个计算机间交互的大门,下面我为大家介绍什么是Socket。Socket用专业术语说就是套接字,不过我相信很多人并不理解套接字的意思,

Socket编程之socket函数

如下图所示,是Socket通信的原理图,左侧为服务端,右侧是客户端,可以看到服务端的步骤要多一些,客户端将在后面讲解。本节开始将从左侧服务端第一步开始逐步讲解,本步骤目标为创建一个套接字,其返回值为后面的步骤使用。下面我们开始正式进入Socket通信的第一步,

TCP的服务端代码流程简述

在讲述了那么多以后我们终于来到了代码阶段的讲解了,先放一张流程图便于大家理解。接着会为大家讲述具体的实现过程。通过上图我们可以看到一个完整的Socket网络通信,是有客户端和服务端两部分代码组成的,即两个程序(你发给我,我接收;我发给你,你接收)组成。

Socket编程之WSACleanup函数

一旦程序结束需要停止Socket库的使用,需要调用WSACleanup函数,这一步和最开始的WSAStartup是对应的。函数功能用于终止对So:cket字库的使用。库链接:#pragmacomment(lib,"ws2_32.lib")表示链接Ws2_32.lib这个库。

TCP的客户端代码流程简述

这一章将为大家讲解Socket通信中客户端的实现过程,还是先上图,请大家了解客户端的步骤可以看到,相比服务端,客户端的步骤简单的很多。事实上这种情况比较多,比如一个服务端会有多个客户端连接。通过图片我们可以看到TCP客务端调用的函数依次是socket()、connect()、recv()、send()

Socket类型有哪些

在通过对Socket的简单介绍后,我们来看一下Socket都有哪些类型。比较常用的类型包括:流式套接字(使用TCP),数据报套接字(UDP),原始套接字等等。我们主要会用到:流式套接字SOCK_STREAM和数据报套接字SOCK_DGRAM。

Socket编程之bind函数

在完成第一步创建套接字,分配了一个Socket描述符后,服务端的第二步就是使用在这个描述符用Bind绑定Bind()系统调用的主要用处:1.服务器向系统注册它的众所周知的地址。面向连接和无连接的服务器在接受客户的请求之前都必须做这一步。2.客户可为自己注册一个特定的地址,

Socket编程之WSAStartup函数

上一节我们介绍了客户端与服务端相互通信的模型图,每一步都有具体的函数实现,但需要明白的是,使用这些函数之前,在Windows系统下,需要先调用WSAStartup函数进行必要的初始化,才可以顺利的进行,而使用WSAStartup函数又需要事先包含对应的头文件winsock2.h及静态库ws2_32.l

Socket服务端完整参考代码

前面讲解了Socket通信中服务端的每一步功能作用及实现,而重点是多个步骤在一起时,上下文函数之间的信息传递需要我们理解,如SOCKADDR_IN的结构体、各个SOCKET描述符等参数,以及在此基础之上改进得到的希望的实际效果(如需要不停的接受消息、发送消息)下面我们将所有步骤串联在一起,