pythonsocket通信
来源:互联网 发布:系统优化是什么意思 编辑:程序博客网 时间:2024/06/16 14:41
学习编程,总会遇到服务器和客户端,相互通信的问题,现在就来介绍一下python的socket模块
首先理解一下客户端和服务器的概念,服务器首先在一台主机的ip和端口,启动服务并监听,等待客户端的连接
客户端通过服务器的ip和端口,连接到服务器
我们现在来用python写服务器,创建一个server.py文件
1.创建socket对象,调用socket的构造函数,
<span style="font-size:14px;">server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)</span>socket.socket(famliy,type),family代表地址家族,
family参数代表地址家族,可为AF_INET或AF_UNIX。AF_INET家族包括Internet地址,AF_UNIX家族用于同一台机器上的进程间通信。
type参数代表套接字类型,可为SOCK_STREAM(流套接字)和SOCK_DGRAM(数据报套接字)。
2.将socket绑定到服务器的主机和ip,通过Bind方法(假如我们在主机的2220端口进行监听)
server.bind(('127.0.0.1',2220))由AF_INET所创建的套接字,address地址必须是一个双元素元组,格式是(host,port)。host代表主机,port代表端口号。如果端口号正在使用、主机名不正确或端口已被保留,bind方法将引发socket.error异常。
3.服务器开始监听,接收客户端的连接请求
server.listen(5)这里的5的意思,可以允许多客户端连接到服务器,至少为1,超过这个数字,服务器便会拒绝连接
4.服务器套接字通过accept方法等待客户请求的一个连接
connection,address=server.accept()调 用accept方法时,socket会时入“waiting”状态。客户请求连接时,方法建立连接并返回服务器。accept方法返回一个含有两个元素的 元组(connection,address)。第一个元素connection是新的socket对象,服务器必须通过它与客户通信;第二个元素 address是客户的Internet地址。
5.服务器和客户端进行连接之后,先开始互相传输数据。服务器通过调用send方法,用字符串的形式向客户发送信息,
通过recv方法接收客户端发过来的数据,必须制定一个收到的最大数据量
server.send(data)server.recv(1024)6.等到数据传输结束,服务器调用close方法,关闭连接
server.close()服务端基本上就是这样,
接下来我们来创建客户端,创建一个client.py
1.客户端相应的也要创建一个socket对象,来连接服务端
client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)2.客户端连接服务器,通过调用connect方法实现,这里的主机和端口要和服务器绑定的一致
client.connect(('127.0.0.1',2220))3.客户端和服务器连接好后,便可开始和服务器进行数据交互
client.send(data)
client.recv(1024)4.传输结束,客户端调用socket的close方法
client.close
0 0
- pythonsocket通信
- Pythonsocket上传和下载文件
- 通信
- 通信
- 通信
- 通信
- 通信
- 通信
- '通信'
- 通信
- 通信
- 网络通信,移动通信
- 进程通信 & 线程通信
- 【通信】通信发展史
- 【通信】通信中的基本知识
- 【通信】互联网通信
- 【通信】移动通信
- 进程通信 线程通信
- 提交spark作业:如何在java中执行shell脚本
- datatables服务端分页之带参数查询以及跳页
- 用Hberinate自动生成实体类的一些异常
- Java模拟表单文件上传(微信/中文名乱码问题)
- 9-3getElementsByTagName()方法
- pythonsocket通信
- ABAP&FI FI/CO接口:待更新的不一致的FI/CO凭证标题数据
- 暑假学习PHP——分页原理
- 遍历Map的四种方法
- 数据库之FMDB源码解析一
- java.lang.UnsupportedClassVersionError: Bad version number in .class file
- 1
- git简单操作
- Baas服务平台有哪些?应用开发有哪些第三方服务