用python编写好socket后将server.py放在服务器,需要注意在服务器端配置使用的端口。
server.py
import socket
# 明确配置变量
ip_port = ('', xx)
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) # 最多可以连接多少个客户端
print('服务器开启,等待连接...')
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()
client.py
import socket
p = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
p.connect(('121.36.xx.xxx', xx))
while 1:
msg = input('please input:')
# 防止输入空消息
if not msg:
continue
p.send(msg.encode('utf-8')) # 收发消息一定要二进制,记得编码
if msg == '1':
break
p.close()
1.注意在server.py中IP地址为空,端口号应该与云服务器配置和client客户端相同。
2.client.py中IP地址为云服务器公网IP
3.云服务器端口配置:
本文使用华为云ECS,进入控制台后,点击底部安全组:
然后点击配置规则:
添加规则:
输入要使用的端口号,确定。
效果如下: