首页 > 编程知识 正文

socket两种套接字,socket套接字通信过程

时间:2023-05-03 07:11:50 阅读:156231 作者:416

用户所想的信息之间的传输只是在两个APP之间建立的,实际上TCP连接是通过套接字架起连接的桥梁。

那么什么是套接字呢?

TCP使用主机的IP地址加上主机上的端口号作为TCP连接的端点。 这个端点称为套接字或套接字。 套接字由(IP地址:端口号)表示,用于区分不同APP应用进程之间的网络通信和连接,主要有三个参数:通信目标IP地址、要使用的传输层协议(TCP或UDP )和端口号

python中的套接字

在python中引用套接字的模块是套接字,在服务器端和客户端之间的信息传输中套接字起着决定性的作用,根据其功能分为3种套接字。 一个是监听套接字,服务器端的负责人总是监听有无来自客户端的请求。 一个是客户端套接字,负责与服务器端的联系和信息的收发; 最后是对等连接套接字,负责服务器端和客户端的信息收发。

上图中出现了双工这个词,那么什么是单工、半双工、全双工呢?

根据通信双方的分工和信号传输方向,可以将通信分为单工、半双工、全双工三种方式。单工数据传输仅支持单向数据传输; 在同一时间只有一方可以接收或发送信息,无法实现双向通信。 例如,电视、广播。半双工数据传输允许数据双向传输,但在某一时刻只允许数据单向传输,实际上是切换方向的单工通信; 同时只有一方可以收发信息,可以双向通信。 /对讲机。全双工数据通信允许同时双向传输数据,如电话通信。

用代码实现服务端与客户端通信服务器端代码如下:

importsocketserver=socket.socket () server.bind ) ).0.0 ',8520 ) ) server.listen(5) )5) while true : a b=SSE 客户端代码如下所示。

importsocketclient=socket.socket () client.connect ) ).0.0 ),8520 ) ) mess=input (-- ) ).encode

---hello,world! 收到响应--b'hello,world!' 服务器端效果:

收到信息了--hello,world! 代码详细了解服务端实现上述效果的过程:

套接字的创建,即实例化。 server=socket.socket ()绑定地址,地址是一个包含ip和端口的元组,它为客户端连接创建自己的地址。 server.bind((127.0.0.5 ),8520 ) ) ) ) ) ) ) ) ) ) ) ) ) 65代码中的5同时是客户端server.listen(5)在接收到连接请求时与客户端建立连接,返回的结果由两个变量接收。 请注意,第一个变量是对等连接套接字,第二个变量是客户端地址(ip和端口) a,b=server.accept,尤其是出现阻塞现象。 关于阻塞将在后面叙述。 使用对等连接套接字打开接收状态。 如果接收到null,则客户端已主动断开连接。 再次发生阻塞,客户端无法发送空值。 代码中的1024表示可以接收的最大字节数。 a.recv(1024 )信息传递讲究一发一发。 收到消息后,必须回复客户。 这里需要注意的是,信息的传递是字节的形式。 a .如果收到a.send(date ) null值,则最后一步是断开连接。 a.close ) )客户端实现上述效果的过程:

创建套接字,即实例化并生成客户端套接字。 client=socket.socket ()向服务器发送连接请求,如果连接成功,原来的客户端套接字实际上就是对等连接套接字。 代码中的ip和端口是服务器上的ip和端口。 client.connect((127.0.0.5 ),8520 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 652 cient.send () 主动断开与cient.recv(1024 )服务器端的连接时,客户端会自动向服务器端发送空值。 什么是client.close ()块?

我们看到的第一个方框应该是input,那时我们应该还没有这方面的认识。 阻止意味着在代码正在运行的地方,必须触发到某个条件才能使代码继续运行。 否则,会一直在这里被屏蔽。 在第一次看到的input中,只需输入文字并按enter键就可以继续执行。 在插座里我们撞到了两个街区。 一个是accept,疏通条件是客户端发送连接请求,另一个是recv,疏通条件是接收方的消息。

代码中的每个对象都解剖实例化的对象

绑定地址后

在接收到连接请求后

客户端连接成功后

套接字阻塞带来的影响:因为阻塞导致服务端一次只能与一个客户端相连,这在实际应用中是万万不可行的,在下篇博客中,我会对非阻塞套接字做一个总结。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。