当前位置 博文首页 > ChenYX的博客:云上python:【四】服务器搭建简易TCP SERVER
在连接阿里云服务器端口前需要先在防火墙设置?,避免防火墙阻止请求。
我们登录阿里云,打开服务器控制台,选择防火墙:
在防火墙界面设置添加规则,前三个是服务器默认的开放连接的端口,这里我增加一个TCP连接的5200端口,用来进行数据传输:
到这里,轻量应用服务器的配置就OK了。ECS的话则还需要将当前规则添加到安全组中再重启才能生效,这里不赘述。
这里我们使用基于python编写的一个简单demo进行测试(参考资料):
# 导入套接字模块
import socket
# 导入线程模块
import threading
# 导入时间
import time
# 定义个函数,使其专门重复处理客户的请求数据(也就是重复接受一个用户的消息并且重复回答,直到用户选择下线)
def dispose_client_request(tcp_client_1, tcp_client_address):
# 5 循环接收和发送数据
while True:
recv_data = tcp_client_1.recv(4096)
# 6 有消息就回复数据,消息长度为0就是说明客户端下线了
if recv_data:
print("客户端是:", tcp_client_address)
print("客户端发来的消息是:", recv_data.decode("GB2312"))
send_data = time.strftime("%H:%M:%S ") + "消息已收到,正在处理中..."
tcp_client_1.send(send_data.encode("GB2312"))
else:
print("%s 客户端下线了..." % tcp_client_address[1])
tcp_client_1.close()
break
if __name__ == '__main__':
# 1 创建服务端套接字对象
tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 设置端口复用,使程序退出后端口马上释放
tcp_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
# 2 绑定端口
tcp_server.bind(("", 5200))
# 3 设置监听
tcp_server.listen(128)
# 4 循环等待客户端连接请求(也就是最多可以同时有128个用户连接到服务器进行通信)
while True:
tcp_client_1, tcp_client_address = tcp_server.accept()
# 创建多线程对象
thd = threading.Thread(target=dispose_client_request, args=(tcp_client_1, tcp_client_address))
# 设置守护主线程 即如果主线程结束了 那子线程中也都销毁了 防止主线程无法退出
# thd.setDaemon(True)
# 启动子线程对象
thd.start()
# 7 关闭服务器套接字 (其实可以不用关闭,因为服务器一直都需要运行)
# tcp_server.close()
?我们命名为TCP.py,用winscp上传到服务器运行进行测试:
利用putty或者xshell命令行运行(我换成了xshell因为连接保活和保存登陆密码比较方便):
这里我使用有人的4G DTU模块进行远程TCP连接,这也是为了以后的毕设的识别上传做准备:
我们在配置上位机填入我们服务器的公网ip和防火墙运行的端口,选择设置所有参数,待写入完成后重启。
然后,我们点击进入通讯模式,输入hello并发送,查看结果(注意服务器端demo要运行):
到这里,我们的TCP服务端就算正式建立了。
本文参考资料:
https://blog.csdn.net/wangtaotao_/article/details/97175108
如有疑问或错误,欢迎和我私信交流指正。
W.By ChenYX,未经授权,请勿转载!
over~
cs