python socket华为云服务器和客户端通信(tcy)
经过无数次测试,失败,失败,失败,和华为技术沟通,失败,失败,失败,上网查询,没有;我都有些心灰意冷,最终解决,分享给大家。
不是替华为打广告,服务应该是没得说,有时一个问题的解决他是一个团队来处理的,再次说声谢谢!不啰嗦下面是正文。
1.运行环境
python软件用conda安装。python3.6.5;打包pyinstaller3.4测试平台用pycharm;本地window7;[华为云](https://l.gushuji.site/huawei)服务器ecs widondws2008
2.1.客户机程序(不用打包直接本地运行)
#!/usr/bin/python# -*- coding: UTF-8 -*-# 文件名:client.py import socket # 导入 socket 模块 # s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 创建 socket 对象# host = socket.gethostname() # 获取本地主机名# port = 12345 # 设置端口号# print('客户端名称=',host,'客户端端口=',port)## client_send_data='客户端发送字符:client send '.encode('utf-8')# client_receive_data=''## s.connect((host, port))# print('客户端开始发送数据...')# s.send(client_send_data)# print('客户端接收数据=', s.recv(1024).decode('utf-8'))# s.close() s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect(("114.116.48.152", 12345))print(s.recv(1024).decode()) data = "client"while True: if data:print(s.recv(1024).decode()) data = input("Please input your name: ") if not data:continue s.send(data.encode()) print(s.recv(1024).decode()) if data == "exit":break s.close()
2.2.服务器程序
#!/usr/bin/python# -*- coding: UTF-8 -*-# 文件名:server.py# import opimport socket # 导入 socket 模块 # s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建 socket 对象# host = socket.gethostname() # 获取本地主机名# port = 12345 # 设置端口# s.bind((host, port)) # 绑定端口## s.listen(5) # 等待客户端连接# print('服务器主机名=',host,'服务器端口=',port)## server_send_data='服务器发送字符:server send '.encode('utf-8')# server_receive_data=''## while True:# c, addr = s.accept() # 建立客户端连接。# print( '连接地址:', addr)# print('服务器开始发送数据...')# c.send(server_send_data)# server_receive_data=c.recv(1024).decode('utf-8')# print('服务器接收数据=',server_receive_data)# c.close() # 关闭连接 import socketimport threading,time def tcplink(conn, addr): print("Accept new connection from %s:%s" % addr) conn.send(b"Welcome!\n") while True: conn.send(b"What's your name?") data = conn.recv(1024).decode() if data == "exit": conn.send(b"Good bye!\n") break conn.send(b"Hello %s!\n" % data.encode()) conn.close() print("Connection from %s:%s is closed" % addr) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)host=socket.gethostname()print(host)addr=['100.125.1.250','100.125.21.250','192.168.0.1','192.168.15.254','192.168.8.3',"114.116.48.152"]# for i in addr:# time.sleep(0.2)host=input('please host:')port=int(input('please port:'))print('stat...',s)s.bind((host, port))if s:print('ok')else:print('ng')s.listen(5)print("Waiting for connection...") while True: conn, addr = s.accept() t = threading.Thread(target = tcplink, args = (conn, addr)) t.start()
3.打包(你不用在服务器安装python)
我已经打包好啦,你可直接下载拷贝到你的[华为云](https://l.gushuji.site/huawei)服务器中(本地电脑--远程桌面)的远程桌面上下载链接:https://pan.baidu.com/s/1_9Kjm15M8wROgNnap006XA 提取码:5a92 当然你也可自己打包,我已经帮你写好了,你可直接运行(打包的操作详细参考我的博文)
打包原码: (你可直接运行以下代码进行打包)
# 1.pyinstaller打包方式1:首选 #!/usr/bin/env python3# -*- coding: utf-8 -*-import osfrom PyInstaller.__main__ import run def compile_exe_first(filename): if __name__ == '__main__': opts =[ '-D','-c', # 直接导入数据图片不会被压缩(应将资源转为.dll或二进制文件) '--add-binary=D:/PycharmProjects/test_py36/resource/picture/*.jpg;resource/picture', '--add-binary=D:/PycharmProjects/test_py36/resource/icon/*.ico;resource/icon', #导入图片.dll文件 # '--add-binary=D:/PycharmProjects/test_py36/upx/upx.exe;./', # 导入.exe文件 r'--add-data=D:\PycharmProjects\test_py36\data\tcy.txt;resource\data', #导入数据文件 r'--add-data=D:\PycharmProjects\test_py36\data\fun.htm;resource\data', #导入数据文件 # '--hidden -import = shutil.grp', #修改你要附件的路径 '--paths=D:\\PycharmProjects\\test_py36', '--paths=D:\\PycharmProjects\\test_py36\\upx', '--paths=D:\\PycharmProjects\\test_py36\\resource\\picture', '--paths=D:\\PycharmProjects\\test_py36\\resource\\icon', '--paths=C:\\ProgramData\\Anaconda3\\Library\\plugins\\PyQt5', '--paths=C:\\ProgramData\\Anaconda3\\Library\\bin', '--paths=C:\\ProgramData\\Anaconda3\\Lib\\site-packages\\PyQt5', '--paths=C:\\ProgramData\\Anaconda3\\Lib\\site-packages', '--icon', 'D:/PycharmProjects/test_py36/resource/icon/icon.ico', '--clean', #'--noupx', '--upx-dir=./', filename #pyqt5_test.spec ] run(opts) filename='server.py' #pyqt5_test.speccompile_exe_first(filename)#================================================================================'''安装pyinstaller:最好从Anaconda Navigator平台安装 pyinstaller3.4,不要从pycharm中安装python3.6.5路径中不要有中文提醒:如果python需要用到外部的加载文件,如背景图片之类,需要按照你的程序中的要求放在相应的目录下,一般都是拷贝在生成的exe文件目录下,python程序中仅用文件名引用就行了,无需路径。'''#===============================================================================# 2.pyinstaller打包方式2:#!/usr/bin/env python3# -*- coding: utf-8 -*-#以上必须包含import osdef compile_exe(py_path,pyinstaller_path): """ :param py_path: 获取需要转换的.py格式文件位置 :param pyinstaller_path: 指定pyinstaller.exe位置 :return: None 说明:此种方式本打包开始执行文件开头必须加# -*- coding: utf-8 -*- """ file_path = py_path.rpartition('\\')[0] + '\\'# 转换后文件的放置目录 print(file_path) # 指定三个选项的文件路径 dist_path = file_path + 'dist' build_path = file_path + 'build' spec_path = file_path # 选项 options = ' -D' +r' --add-data=' \ r'D:\PycharmProjects\test_py36\resource\picture\girl.jpg;resource\picture' +\ ' --distpath ' + dist_path +\ ' --workpath ' + build_path + \ ' --specpath ' + spec_path + ' ' # 调用系统命令 os.system('python ' + pyinstaller_path + options + py_path) def test_compile_exe(): py_path=r'D:\PycharmProjects\test_py36\pyqt5_test.py' pyinstaller_path=r'C:\ProgramData\Anaconda3\Scripts\pyinstaller-script.py' compile_exe(py_path,pyinstaller_path) # test_compile_exe()
4.华为云服务器配置
登陆华为官网,配置安全组。
注意:
注意防火墙(我是全部关闭)设置完成后服务器关机后重启
5.运行(先运行服务器端程序,在运行客户端程序)
服务器端
注意你要输入你配置的ip(私网,不要用公网)和端口号
客户端运行:(ip(用公网,不要用私网)和端口号相同)
操作:你输入“字符串”,运行:显示Hello “字符串”!
6.注意:
如果不能连接大多是配置问题。云服务器配置不正确,本地配置只要能正常上网一般没什么要求。下面显示正常的配置 正常显示结果:1)[华为云](https://l.gushuji.site/huawei)服务器中: C:\Users\Administrator>netstat -n活动连接 协议 本地地址 外部地址 状态 TCP 127.0.0.1:49156 127.0.0.1:49157 ESTABLISHED TCP 127.0.0.1:49157 127.0.0.1:49156 ESTABLISHED TCP 192.168.8.3:3306 116.238.115.211:58514 ESTABLISHED#mysql服务器 TCP 192.168.8.3:3306 116.238.115.211:58515 ESTABLISHED#mysql服务器 TCP 192.168.8.3:3389 116.238.115.211:58420 ESTABLISHED#server.exe(server.py) TCP 192.168.8.3:12345 116.238.115.211:58455 ESTABLISHED TCP 192.168.8.3:49161 100.125.40.3:80 CLOSE_WAIT 2)本地电脑C:\Users\Administrator>netstat -n 活动连接 协议 本地地址 外部地址 状态 TCP 127.0.0.1:49621 127.0.0.1:49622 ESTABLISHED TCP 127.0.0.1:49622 127.0.0.1:49621 ESTABLISHED TCP 127.0.0.1:49623 127.0.0.1:49624 ESTABLISHED TCP 127.0.0.1:49624 127.0.0.1:49623 ESTABLISHED TCP 127.0.0.1:50990 127.0.0.1:50991 ESTABLISHED TCP 127.0.0.1:50991 127.0.0.1:50990 ESTABLISHED TCP 192.168.31.184:49349 221.228.75.150:9203 ESTABLISHED TCP 192.168.31.184:50949 122.246.3.93:80 CLOSE_WAIT TCP 192.168.31.184:50979 117.48.124.214:80 CLOSE_WAIT TCP 192.168.31.184:50980 114.80.177.92:443 CLOSE_WAIT TCP 192.168.31.184:50985 120.92.84.225:9002 CLOSE_WAIT TCP 192.168.31.184:50992 203.100.92.12:5222 ESTABLISHED TCP 192.168.31.184:51012 117.48.124.214:80 CLOSE_WAIT TCP 192.168.31.184:51533 117.48.124.214:80 CLOSE_WAIT TCP 192.168.31.184:51740 114.116.48.152:3389 ESTABLISHED TCP 192.168.31.184:51767 58.222.18.29:80 CLOSE_WAIT TCP 192.168.31.184:52455 117.48.124.214:80 CLOSE_WAIT TCP 192.168.31.184:52456 117.48.124.214:80 CLOSE_WAIT TCP 192.168.31.184:52457 117.48.124.214:80 CLOSE_WAIT TCP 192.168.31.184:52903 114.80.197.113:80 CLOSE_WAIT TCP 192.168.31.184:52951 101.89.125.217:80 CLOSE_WAIT TCP 192.168.31.184:52954 114.80.197.113:80 CLOSE_WAIT TCP 192.168.31.184:52955 114.80.197.113:80 CLOSE_WAIT TCP 192.168.31.184:52956 114.80.197.113:80 CLOSE_WAIT TCP 192.168.31.184:52957 114.80.197.113:80 CLOSE_WAIT TCP 192.168.31.184:52981 117.48.124.241:80 CLOSE_WAIT TCP 192.168.31.184:53018 117.48.124.214:80 CLOSE_WAIT TCP 192.168.31.184:53821 106.11.248.141:443 ESTABLISHED TCP 192.168.31.184:53912 183.36.108.16:36688 FIN_WAIT_1 TCP 192.168.31.184:53913 183.36.108.16:36688 FIN_WAIT_1 TCP 192.168.31.184:53941 183.3.225.78:36688 FIN_WAIT_1 TCP 192.168.31.184:53952 183.3.225.79:36688 TIME_WAIT TCP 192.168.31.184:53953 180.163.32.152:80 TIME_WAIT TCP 192.168.31.184:53959 183.3.225.79:36688 TIME_WAIT TCP 192.168.31.184:53964 183.3.225.78:36688 TIME_WAIT TCP 192.168.31.184:53971 183.3.225.79:36688 TIME_WAIT TCP 192.168.31.184:53981 216.58.200.238:443 SYN_SENT TCP 192.168.31.184:53982 115.239.211.112:443 FIN_WAIT_1 TCP 192.168.31.184:53983 216.58.200.238:443 SYN_SENT TCP 192.168.31.184:53984 216.58.200.238:443 SYN_SENT TCP 192.168.31.184:53985 216.58.200.238:443 SYN_SENT TCP 192.168.31.184:53986 216.58.200.238:443 SYN_SENT TCP 192.168.31.184:53987 216.58.200.238:443 SYN_SENT TCP 192.168.31.184:53988 220.181.164.91:8888 ESTABLISHED TCP 192.168.31.184:53989 115.239.211.112:443 FIN_WAIT_1 C:\Users\Administrator>
查看电脑的配置
1.华为服务器 C:\Users\Administrator>ipconfig Windows IP 配置 以太网适配器 本地连接 4: 连接特定的 DNS 后缀 . . . . . . . : openstacklocal 本地链接 IPv6 地址. . . . . . . . : fe80::c585:95b9:741a:a1a3%14 IPv4 地址 . . . . . . . . . . . . : 192.168.8.3 子网掩码 . . . . . . . . . . . . : 255.255.240.0 默认网关. . . . . . . . . . . . . : 192.168.0.1 隧道适配器 isatap.openstacklocal: 媒体状态 . . . . . . . . . . . . : 媒体已断开 连接特定的 DNS 后缀 . . . . . . . : openstacklocal 隧道适配器 Teredo Tunneling Pseudo-Interface: 媒体状态 . . . . . . . . . . . . : 媒体已断开 连接特定的 DNS 后缀 . . . . . . . : 2)本地电脑C:\Users\Administrator>ipconfig Windows IP 配置 无线局域网适配器 无线网络连接: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::dda4:be60:d0b:e8f0%15 IPv4 地址 . . . . . . . . . . . . : 192.168.31.184 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 192.168.0.1 192.168.31.1 以太网适配器 本地连接: 媒体状态 . . . . . . . . . . . . : 媒体已断开 连接特定的 DNS 后缀 . . . . . . . : 隧道适配器 isatap.{91B4435E-4B35-43A2-A2D3-3A4876D96A69}: 媒体状态 . . . . . . . . . . . . : 媒体已断开 连接特定的 DNS 后缀 . . . . . . . : 隧道适配器 Teredo Tunneling Pseudo-Interface: 媒体状态 . . . . . . . . . . . . : 媒体已断开 连接特定的 DNS 后缀 . . . . . . . : 隧道适配器 isatap.{2C673B69-0B9F-4635-92EB-A8BDC9A7F5CD}: 媒体状态 . . . . . . . . . . . . : 媒体已断开 连接特定的 DNS 后缀 . . . . . . . : C:\Users\Administrator>
有问题大家交流。
python socket华为云服务器和客户端通信(tcy)相关推荐
- 一段最简单的使用socket.io进行服务器和客户端通信的例子代码
服务器端代码: var app = require('express')(); var server = require('http').Server(app); var io = require(' ...
- 基于Python Tkiner、thread与socket实现的简单多人聊天室,在Python中创建TCP服务器与客户端进行通信
基于Python Tkiner.thread与socket实现的简单多人聊天室,在Python中创建TCP服务器与客户端进行通信 完整代码下载地址:基于Python Tkiner.thread与soc ...
- python 实现TCP socket通信和 HTTP服务器、服务器和客户端通信python实例
python 实现TCP socket通信和 HTTP服务器.服务器和客户端通信实例 socket是什么? 服务器和客户端通信的流程 python 实现TCP socket通信例子 关于Host和PO ...
- python应用系列教程——python使用socket创建tcp服务器和客户端
全栈工程师开发手册 (作者:栾鹏) python教程全解 python使用socket创建tcp服务器和客户端. 服务器端为一个时间戳服务器,在接收到客户端发来的数据后,自动回复. 客户端,等待用户输 ...
- 【华为云Linux服务器】本地client通过socket链接不上华为云服务器的外网ip创建的server
1.检查网络环境是否ok 1.ping 你的云服务器外网ip,是否ok 2.在云服务器好ping www.baidu.com,是否ok 如果都ok,说明外网是配置ok的. 2.检查端口是否配置ok 1 ...
- 华为云服务器初探二(完结)
在上一篇<华为云服务器初探> 中介绍了在使用华为云服务器部署时的一些关键点,本篇继续,内容涉及如下: 中间件的部署问题解决 NAT 网关使用 数据库服务的访问 dotNET Core 程序 ...
- (云服务器学习)部署python程序到云服务器
(云服务器学习)部署python程序到云服务器 我本来好早就买了阿里云的服务器,以前叫做学生机,现在好像叫云翼计划,我感觉每年花个不到百元能玩玩也挺不错的.还能在上面搭建个人博客,跑跑程序,以后还能学 ...
- 华为云服务器还需要确定位置吗,有了云服务器还需要主机吗
有了云服务器还需要主机吗 内容精选 换一换 访问CloudTable的HBase连接不上,出现如下所示的错误信息:出现该问题的可能原因为:网络访问不通.由于CloudTable的链接地址是内网地址,不 ...
- 华为云服务器+Nginx+Python3.7+Django2.2+支付宝支付接入部署
华为云服务器+Nginx+Python3.7+Django2.2+支付宝支付接入部署 本次分享内容共分四个主要部署步骤 1.Django框架项目搭建部署 2.本地内网穿透测试 3.阿里支付宝支付接口部 ...
最新文章
- vue获取“分享给朋友”按钮点击状态及自定义分享内容接口
- Django--Uploaded Files以及Handlers
- android class newinstance 构造函数 参数,android Fragment里的newInstance和构造函数
- LeetCode 450 Delete Node in a BST(二叉搜索树中的删除结点)
- Multiple markers at this line
- jquery改变字符串中部分字符的颜色
- MyBatis-Plus_分页查询
- 2-2hadoop概述
- 操作系统(1)-进程与线程
- 语音识别的准确率,永远达不到100%?
- 橙子减肥法:好吃快速成为瘦美人 - 健康程序员,至尚生活!
- libreelec投屏_低配置主机安装Kodi操作系统 - LibreELEC
- 电脑和微信怎么发邮件到别人邮箱,企业邮箱如何发email给别人
- 千杯酒中检测那一杯毒酒的问题及思考
- 笨办法学python习题1-10
- SQL全方位攻略:之数据库历史、数据库基本概念和相关术语,以及常见的数据库类型介绍
- hexo下next主题的优化
- 2022年3月盗取微软源代码的 APT组织 lapsus$完整资料汇总
- 开发落网电台windows phone 8应用的计划(3)
- msk 频偏_QPSK,OQPSK,MSK概述.ppt
热门文章
- 【图像识别】基于计算机视觉实现路面裂缝检测识别系统matlab代码
- 512m内存 mysql_mysql 512m-4g内存 配置建议
- Preferences...
- 杂谈(1)难得清明(写于昨晚)
- ERROR: No matching distribution found for pandas
- 查看Sql-yog鼠标建表代码
- linux程序处理u盘的数据,Linux usbmon获取的U盘数据
- 登录、注册的用户名去空格
- 【leetcode】2409. 统计共同度过的日子数(js实现)
- 百度飞桨EasyDL图像分类:收费口车辆类型自动识别