一、概述
之前我们只是介绍了soket的概念和一些逻辑图表,下面我们来看看,socket的客户端和服务端到底是怎么用的?
二、socket实例
2.1 客户端
2.1.1 客户端代码逻辑图
2.1.2 客户端代码
import socket #导入socket模块client = socket.socket() #创建socket实例client.connect(("localhost",6969)) #建立连接send_data = "hello word!" #发送的字符串send_data = send_data.encode() #因为发送是bytes类型,所以这边先转码成bytes类型client.send(send_data) #发送数据,这边发送的是字节类型,也就是bytes类型data = client.recv(1024) #接收服务端的数据,这边设置接收1024字节 1kb=1024字节print("server rece:",data.decode())client.close() #关闭与服务端的链接
2.2 服务端
2.2.1 服务端代码逻辑图
2.2.2 服务端代码
import socketsever = socket.socket() #创建服务端实例sever.bind(("localhost",6969)) #绑定客户端ip和端口sever.listen() #监听端口print("我在电话了....")conn,addr = sever.accept() #接收客户端,并且返回连接标志位(conn)实例,和对方的ip地址(addr)data = conn.recv(1024) #接收客户端发过来的数据,接收的也是bytes类型的数据print("我的电话来了")print("client data:",data.decode())conn.send(data.upper()) #发送数据至服务端,注意这边发送的也是字节类型,是bytes类型sever.close() #关闭服务端
三、总结
- python2中可客户端或者服务端均可发送字符串和字节,但是在python3中只能发字节,也就bytes类型的比特流
- 服务端接收客户端的链接时,会返回跟客户端的链接标志位的实例和对方ip地址+随机端口号
- 此例子只是TCP/IP协议的socket链接,后面继续学习UDP的链接