本节内容
1、概述
2、socket实例
3、总结
一、概述
之前我们只是介绍了soket的概念和一些逻辑图表,下面我们来看看,socket的客户端和服务端到底是怎么用的?
二、socket实例
2.1 客户端
2.1.1 客户端代码逻辑图
2.1.2 客户端代码
1
2
3
4
5
6
7
8
9
10
|
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 服务端代码
1
2
3
4
5
6
7
8
9
10
11
12
|
import
socket
sever
=
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的链接