文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python之怎么使用socket

2023-06-01 23:52

关注

本篇内容主要讲解“python之怎么使用socket”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python之怎么使用socket”吧!

01:OSI模型

1)OSI模型包括应用层、表示层、会话层、传输层、网络层、数据链路层、物理层这7层。常用的主要是应用层和传输层,其余就不一一介绍。

2)应用层:网络服务和一些终端的应用。比如HTTP协议、FTP协议

3)传输层:定义了一些传输数据的协议和端口号。如UDP协议、TCP协议

02:网络通信三要素(IP地址、端口号、传输协议)

1)IP地址:表示网络上一台 独立的主机 ; IP地址=网络地址+主机地址。其中特殊的IP地址:127.0.0.1(本地回环地址),表示本机

2)端口号:用于标识进程的逻辑地址;不同的进程都有不同的端口标识。

3)传输协议:通讯的规则。

①UDP:用户数据报协议。面向无连接,传输数据之前源端和目的端不需要建立连接。如实时在线聊天、视频会议等

②TCP:传输控制协议。面向连接,传输数据之前需要建立连接。在连接过程中进行大量数据传输,通过“三次握手”的方式完成连接,是安全可靠协议。传输速度慢效率低

03:TCP三次握手

1)TCP建立连接时要传输三个数据包,俗称三次握手(Three-way Handshaking)通俗的理解为:

套接字A:“你好,套接字B,我这里有数据要传送给你,建立连接吧。”套接字B:“好的,我这边已准备就绪。”套接字A:“谢谢你受理我的请求。”

2)三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

04:socket通信流程

1)创建服务端socket对象。对象创建时,需要绑定它的IP地址(IPv4或Ipv6)和协议(TCP或UDP)。 bind()绑定本机IP地址和端口号,listen()启动监听等待客户端发送的请求。至此服务端建立完成。

2)创建服务端socket对象。根据服务端IP地址和端口号试图连接服务端socket端。

3)服务端监听接收accept()到客户端发送的请求,建立与客户端的连接connect()。

4)连接建立后,客户端可以发送send()数据到socket对象中,服务端可以接收recv()到客户端发送的数据。

5)服务端处理数据后,可以向socket对象返回一个send()处理结果,客户端读取recv()到这个返回结

6)客户端关闭close()连接,客户端释放当前占用的客户端端口号

7)服务端收到客户端关闭消息后,关闭与客户端的连接

05:socket常用方法

1)概述:又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。

2)方法分类:服务端套接字、客户端套接字、公共用途套接字

①服务端:bind、listen、accept

②客户端:connet等

③公共端:recv、send、sendall、close等

3)注意事项:socket进入阻塞状态,即 accept()方法一直等到客户端返回连接信息后才返回,开始接收下一个客户端连接请求

06:服务端与客户端的简单通信

发送数据:通过bytes类型进行传输,需要通过bytes(sendData)转换

接收数据:通过str类型接收,需要通过str(client_data)转换

accept():接受并建立与客户端的连接,程序在此处开始阻塞,只有到客户端连接起来。

#服务端代码 import socket sk=socket.socket()#创建服务端socket对象 ip_port=('127.0.0.1',13008)sk.bind(ip_port)#绑定IP地址和端口号 sk.listen(5)#开始监听是否有请求:同时最多允许有5个连接 print('等待客户端的连接')#释放信号 coon,addr=sk.accept()#连接成功后会返回一个新的套接字和客户端地址 print('客户端新的连接:',addr)client_data=coon.recv(1024)#接收数据:一次性接收1024字节 print(str(client_data,encoding='utf8'))sendData=input('请输入>>>')coon.sendall(bytes(sendData,encoding='utf8'))#发送数据 coon.close()#关闭资源 sk.close()
#客户端代码 import socket sk=socket.socket()#创建客户端socket对象 ip_port=('127.0.0.1',13008)sk.connect(ip_port)#发起连接 sendData=input('请输入>>>')sk.sendall(bytes(sendData,encoding='utf8'))#发送数据:通过bytes类型进行传输 sever_data=sk.recv(1024)#接收数据:一次性接收1024字节 print(str(sever_data,encoding='utf8'))#接收数据:通过str类型来接收 sk.close()

到此,相信大家对“python之怎么使用socket”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯