客户端(发消息)
import socket
p = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
p.connect(('192.168.1.101',22)) # 服务端ip和端口
while 1:
msg = input('please input')
# 防止输入空消息
if not msg:
continue
p.send(msg.encode('utf-8')) # 收发消息一定要二进制,记得编码
print()
if msg == '1':
break
服务端
import socket
# 明确配置变量
ip_port = ('192.168.1.101',22)
back_log = 5
buffer_size = 1024
# 创建一个TCP套接字
ser = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 套接字类型AF_INET, socket.SOCK_STREAM tcp协议,基于流式的协议
ser.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) # 对socket的配置重用ip和端口号
# 绑定端口号
ser.bind(ip_port) # 写哪个ip就要运行在哪台机器上
# 设置半连接池
ser.listen(back_log) # 最多可以连接多少个客户端
while 1:
# 阻塞等待,创建连接
con,address = ser.accept() # 在这个位置进行等待,监听端口号
while 1:
try:
# 接受套接字的大小,怎么发就怎么收
msg = con.recv(buffer_size)
if msg.decode('utf-8') == '1':
# 断开连接
con.close()
print(msg.decode('utf-8'))
except Exception as e:
break
# 关闭服务器
ser.close()