python实现客户端之间的通信_基于Python的服务端多线程与多客户端的通信过程
实现server服务端多线程程序,可以开启多个客户端,每个客户端都能实现向服务端发送数据的过程,可以设置最大监听客户端数。
服务端使用命令:
python server.py 520 进行开启
其中server.py后面的参数520是自己设置的端口号
客户端使用命令:
python client.py
--ip 192.168.0.55 --port 520
其中 –ip
后面的是主机服务端的IP地址 –port
后面的是端口号
也可以单独开启服务端,然后使用网络调试助手进行连接测试以及发送内容测试等
服务端程序代码:
#!/usr/bin/python
#coding:utf-8
import socket
import sys
import threading
def threadfun(sock,addr):
try:
while True:
data = sock.recv(1024)
if data == "quit" or data == "exit":
print "Client %s exit!" % addr[0]
break
if data:
print "Message from %s:%s" % (addr[0],data)
sock.send("Hello,%s" % data)
sock.close()
except socket.erron,e:
print "Socket error : %s" % str(e)
except Exception as e:
print "Other exception: %s" % str(e)
finally:
sock.close()
def server(port):
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 启用地址重用
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,
1)
# 绑定地址和端口号
srv_addr = ("0.0.0.0", port)
# 侦听客户端
sock.bind(srv_addr)
sock.listen(5)
while True:
conn,addr = sock.accept()
t = threading.Thread(target=threadfun, args=(conn,
addr))
t.start()
if __name__ == "__main__":
if
len(sys.argv) == 2:
port
= sys.argv[1]
server(int(port))
else:
"Input error."
客户端程序代码:
#!/usr/bin/python
#coding:utf-8
import socket
import sys
import argparse
def client(host,port):
# 创建TCP套接字
sock =
socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 连接服务器
srv_addr = (host, port)
sock.connect(srv_addr)
# 发送并接收数据
try:
while True:
msg = raw_input("Please input: ")
sock.sendall(msg)
if msg == "quit" or msg == "exit":
break
data = sock.recv(1024)
print "Message from server: %s" % data
sock.close()
except socket.erron,e:
print "Socket error : %s" % str(e)
except Exception as e:
print "Other exception: %s" % str(e)
finally:
sock.close()
if __name__ == "__main__":
parser
= argparse.ArgumentParser(description="Socket Server Example")
parser.add_argument("--ip",
action="store", dest="host", type=str, required=True)
parser.add_argument("--port",
action="store", dest="port", type=int, required=True)
given_args
= parser.parse_args()
host
= given_args.host
port
= given_args.port
client(host,
port)
python实现客户端之间的通信_基于Python的服务端多线程与多客户端的通信过程相关推荐
- python写安卓app控制蓝牙_基于python实现蓝牙通信代码实例
这篇文章主要介绍了基于python实现蓝牙通信代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 安装和示例 linux下安装 sudo apt ...
- python中numpy数组的合并_基于Python中numpy数组的合并实例讲解
基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...
- 基于python的气象数据分析统计服_基于Python的风向风速数据分析的设计与实现
基于 Python 的风向风速数据分析的设计与实现 李文倩 ; 刘婕 [期刊名称] < <信息通信> > [年 ( 卷 ), 期] 2019(000)009 [摘要] Pyth ...
- python怎样使用各个日期赤纬_基于Python的天文软件命令行界面设计与实现
计算机软件技术的不断发展,推动了人机交互技术的长足进步.从传统的命令行(Command Line Interface,CLI),到图形用户界面(Graphical User Interface,GUI ...
- python版植物大战僵尸源码_基于python的植物大战僵尸游戏设计与实现.docx
湖南理工学院毕业设计(论文) PAGE PAGE 1 学 号 毕业设计(论文) 题目:基于python的植物大战僵尸游戏设计与实现 作 者 届 别 届 院 别 信息与通信工程学院 专 业 信息工程 指 ...
- python分布式爬虫开题报告范文_基于Python的豆瓣Top250排行榜影片数据爬取和分析开题报告...
一.选题依据:(简述研究现状,说明该毕业设计的设计目的及意义) 研究现状 Python是一门很全面的语言,又随着大数据和人工智能的兴起,广受爬虫设计者们的青眯.设计者们运用Python语言的框架-Sc ...
- python随机输出52张牌_基于Python制作一副扑克牌过程详解
整理一下通过本文分享给大家, 该案例是通过 Python 类属性创建一幅除去大王.小王之后的 52 张扑克牌,并实现随机抽牌.排序.洗牌等功能: 创建一个纸牌类 一副扑克除去大王小王之外,剩下的 52 ...
- 用python写脚本筛选原创微博_基于python编写的微博应用
本文实例讲述了基于python编写的微博应用,分享给大家供大家参考.具体如下: 在编写自己的微博应用之前,先要到weibo开放平台申请应用的公钥和私钥. 下载python版的SDK,打开example ...
- python中sample是什么意思_基于Python中random.sample()的替代方案
python中random.sample()方法可以随机地从指定列表中提取出N个不同的元素,但在实践中发现,当N的值比较大的时候,该方法执行速度很慢,如: numpy random模块中的choice ...
最新文章
- 使用html格式,通过php调用数据库并显示数据
- java for 最后_Java的for循环中调用了查询服务,最后只打印了循环的最后一条数据(循环次数)次...
- 浅谈SpringCloud (二) Eureka服务发现组件
- 开源大数据周刊-第103期
- 操作系统的中断和异常
- html捉虫游戏,幼儿园体育游戏《小鸡捉虫》教案(精选4篇)
- 【ElasticSearch】Es 源码之 Discovery DiscoveryModule 源码解读
- Ice简介+Qt代码示例
- GifUtil给gif图片添加文字、图片水印
- 【电源模块】TPS54331 DCDC降压芯片设计
- 软件使用-如何卸载360安全客户端
- (web前端每日一练)用JavaScript制作一个跟随鼠标的小球炫彩动画 /doge/doge
- 整数的分类处理 C++
- [源码、文档、分享] iOS/iPhone学习系列、代码教程----~~~持续更新中~~~
- 两性情感关系中的核心价值是什么?
- java获取指定格式的年月日时分秒时间
- 二叉树:广义表搭建二叉树
- 咸鱼硬件—Micropython介绍
- js继承的六种方式详解--认真看完你就会了
- 嵌入式编程规范及注意事项
热门文章
- 计算机国三网络技术,计算机国三网络技术.doc
- mysql 行级锁 where_mysql 行级锁的使用以及死锁的预防
- UVA 540 Team Queue
- Linux文件系统结构
- 【Asp.net Core】在 Linux 子系统中安装 nginx 并配置反向代理
- 【2017-05-25】WebForm母版页
- sql 2005中全文索引的使用
- 异常为当IDENTITY_INSERT设置为OFF时 的解决
- Web Control开发随笔(4):Control与WebControl 的Properity初探
- 发现了一个美图看看软件的一个bug