C++ Socket编程步骤

  • A+
所属分类:QQ相关

其实还好啦,静下心来慢慢啃,总会有收获的。

同时自己还开了个定时器,如果逾期收不到反馈会重试。

随机数和SessionID均为随机生成。

TLS通常用于保证Web通信(HTTP)以及其他流行协议的安全,比如POP、IMAP,当它们使用TLS保护后,分别被称为HTTPS、POPS和IMAPS。

**发送固定长度的消息**1.优势:容易简单,只要通信双方都按照固定长度发送和接收数据即可。

参数addr和addrlen存放客户方的地址信息。

返回第二步,等待另一客户请求。

优点:速度快、效率高。

如果没有错误发生,recv返回总共接收的字节数。

**Remoting:**它是通过通道(channel)来实现两个应用程序域之间对象通信的。

**Socket通信:**应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口,把复杂的TCP/IP协议族隐藏在Socket接口后面。

且需要获取消息接收方的窗口句柄,显然不适合系统服务。

该值至少为1,大部分应用程序设为5就可以了。

这个位置被一个天才的理论家或者是抽象的计算机大神提出并且安排出来

我们可以发现socket就在应用程序的传输层和应用层之间,设计了一个socket抽象层,传输层的底一层的服务提供给socket抽象层,socket抽象层再提供给应用层,问题又来了,应用层和socket抽象层之间和传输层,网络层之间如何通讯的呢,了解这个之前,我们还是回到原点要想理解socket编程怎么通过socket关键词实现服务器和客户端通讯,必须得实现的了解tcp/ip是怎么通讯的,在这个的基础上在去理解socket的握手通讯在tcp/ip协议中,tcp通过三次握手建立起一个tcp的链接,大致如下第一次握手:客户端尝试连接服务器,向服务器发送syn包,syn=j,客户端进入SYN_SEND状态等待服务器确认第二次握手:服务器接收客户端syn包并确认(ack=j+1),同时向客户端发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手三次握手如下图:

根据tcp的三次握手,socket也定义了三次握手,也许是参考tcp的三次握手,一些计算机大神们画出了socket的三次握手的模型图模型图如下:

在上面图的基础上,如果我们得到上面的图形,需要我们自己开发一些接口,来满足上面的通讯的三次握手,问题就出来了,我们会需要开发哪些函数4:socket的一些接口函数原理通过上面的图,我们清楚,我们好比一些泛型的程序员,一些理论提供者提供给了我们上面的图形的理论,我们需要做的就是讲上面的图形的抽象化的东西具体化第一次握手:客户端需要发送一个synj包,试着去链接服务器端,于是客户端我们需要提供一个链接函数第二次握手:服务器端需要接收客户端发送过来的synJ+1包,然后在发送ack包,所以我们需要有服务器端接受处理函数第三次握手:客户端的处理函数和服务器端的处理函数三次握手只是一个数据传输的过程,但是,我们传输前需要一些准备工作,比如将创建一个套接字,收集一些计算机的资源,将一些资源绑定套接字里面,以及接受和发送数据的函数等等,这些功能接口在一起构成了socket的编程下面大致的按照客户端和服务端将所需的函数详细的列举出来

上面的两个图都概述了socket的通讯原理5:socket的一个例子,总结上述的问题详细就不在说明,通过一段代码详细的解释客户端的代码:includeincludepragmacomment(lib,"ws2_32.lib")intmain6:上面例子用到的知识点(摘抄carter大神文章):服务器端:其过程是首先服务器方要先启动,并根据请求提供相应服务:(1)打开一通信通道并告知本地主机,它愿意在某一公认地址上的某端口(如FTP的端口可能为21)接收客户请求;(2)等待客户请求到达该端口;(3)接收到客户端的服务请求时,处理该请求并发送应答信号。

在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。

是原始式套接字(SOCK_RAW)该接口允许对较低层协议,如IP、ICMP直接访问。

3、socket的基本操作既然socket是open—write/read—close模式的一种实现,那么socket就提供了这些操作对应的函数接口。

普通文件的打开操作返回一个文件描述字,而**socket()**用于创建一个socket描述符(socketdescriptor),它唯一标识一个socket。

如果没有错误发生,send返回总共发送的字节数。

backlog指定在拒绝连接之前,操作系统可以挂起的最大连接数量。

现在业界感觉从协议到socket中间这环是欠缺的,导致很多同学并不能融会贯通。

大端小端1.**大端小端的定义**1.**大端字节序(Big-Endian,简称大端)**:就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: