从零带你入门Socket编程

TCP为了保证可靠传输,减少额外开销,采用面向流式传输。

socket编程基本流程!在这里插入图片描述(https://img-blog.csdnimg.cn/20210510221944350.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzUyODIxMzc0,size_16,color_FFFFFF,t_70pic_center)socket编程(java实现)服务端使用ServerSocket绑定IP和端口,使用Accept监听端口是否有客户端发送连接请求,一旦有客户端发送连接请求,服务端就回送连接信息,正式建立连接。

**指定本地地址──bind**当一个套接字用socket创建后,存在一个名字空间(地址族),但它没有被命名。

服务完成后,关闭此新进程与客户的通信链路,并终止。

通过上图我们不难看出TCP协议的最终目的就是:保证数据传输的有效性。

实际上服务器在准备接受客户端的握手请求之前,需要准备半连接队列和全连接队列,准备好之后才能接收握手请求。

否则它返回SOCKET_ERROR。

你调用accept的时候就是从这个接收队列中获取一个握手就绪连接来用。

在第二步创建连接中,对于HTTPS请求,会进行两步操作,分别建立TCP连接,和TLS连接。

如果没有错误发生,connect返回。

想服务器发服务请求报文,等待并接收应答,继续提出请求(3)、请求结束后关闭通信通道并终止。

创建socket的时候,也可以指定不同的参数创建不同的socket描述符,socket函数的三个参数分别为:*domain:即协议域,又称为协议族(family。

也就是说,数据错了就错了,无法重传。

socket.SOCK_SEQPACKET|可靠的连续数据包服务创建TCPSocket:|s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)创建UDPSocket:|s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)2、Socket函数注意点:1)TCP发送数据时,已建立好TCP连接,所以不需要指定地址。

应用层向TCP层发送用于网间传输的、用8位字节表示的数据流。

>一个进程占用了一个端口,并建立相关协议的通信,由socket标识着它。

客户端socket函数s.connect(address)|连接到address处的套接字。

flags指定传输控制方式,如是否接收带外数据等。

数据链路层:SLIP、CSLIP、PPP、MTU。

后来在发现第一个版本65535不算多,要是加上特殊的字符就不够了,于是从1996年开始制定了第二个版本。

工作线程负责从IOCP消息队列中取走完成通知并执行数据处理。

**服务管理**1.消息服务器管理:管理和维护消息服务器资源。

Related Posts

Leave a Reply

We will keep You Updated...
Sign up to receive breaking news
as well as receive other site updates!
Sponsors


Featured Video
Sponsors
Popular Posts
Flickr RSS
Recent Comments
Hi, this is a comment. To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashb
Tag Cloud