通信步骤: 1、连接 2、传输数据 3、关闭连接 服务端的创建流程: 1、创建服务端socket对象 socket_family:网络地址类型 AF_INET--代表的是ipv4地址类型 socket_type:套接字类型 SOCK_STREAM--代表的是tcp套接字 SOCK_DGRAM--代表的是udp套接字 2、绑定自己的IP以及端口号:bind的参数必须是一个元组,该元组的元素(ip,port) 3、设置监听模式,设置最大的连接数 4、等待客户端连接——accept有两个返回值: 1、客户端链接的套接字对象(客户端发送的消息)——conn 2、链接的客户端地址——client 5、接收客户端数据——recv的参数是每次最多接收的最大字节 6、给客户端发送数据 7、关闭
服务端:
import socket
# 1、创建服务端socket对象
telphone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 2、绑定自己的ip以及端口号
telphone.bind(('127.0.0.1',10086))
# 3、设置监听模式,设置最大的连接数
telphone.listen(5)
#4、等待客户端连接
conn,client = telphone.accept()
# 5、接收客户端数据
while True:
data = conn.recv(1024)
# 解码
if not data: # 当接收不到客户端的数据的时候,就代表结束通信
break
print(data.decode('utf-8'))
# 6、给客户端发送数据
conn.send(data)
# 7、关闭
conn.close()
telphone.close()
运行该代码就是启动服务端
客服端:
import socket
# 1、创建服务端socket对象
phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 2、连接服务端ip和端口
phone.connect(('127.0.0.1',10086))
# 3、发送,接收数据
# 发送--要对数据进行转码--encode
while True:
# tcp套接字不允许发送空白消息
msg = input('输入数据(q退出)').strip()# 客户端输入的数据
# 检测发送的消息是否为空
if not msg:
continue
if msg =='q':# 当输入q的时候就结束通信
break
phone.send(msg.encode('utf-8'))
# 接收数据--需要解码decode
data = phone.recv(1024)
#解码
print(data.decode('utf-8'))
# 4、关闭
phone.close()
运行结果:——通信:先启动服务端,再启动客户端
客户端
服务端