实现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:

print

"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的服务端多线程与多客户端的通信过程相关推荐

  1. python写安卓app控制蓝牙_基于python实现蓝牙通信代码实例

    这篇文章主要介绍了基于python实现蓝牙通信代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 安装和示例 linux下安装 sudo apt ...

  2. python中numpy数组的合并_基于Python中numpy数组的合并实例讲解

    基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...

  3. 基于python的气象数据分析统计服_基于Python的风向风速数据分析的设计与实现

    基于 Python 的风向风速数据分析的设计与实现 李文倩 ; 刘婕 [期刊名称] < <信息通信> > [年 ( 卷 ), 期] 2019(000)009 [摘要] Pyth ...

  4. python怎样使用各个日期赤纬_基于Python的天文软件命令行界面设计与实现

    计算机软件技术的不断发展,推动了人机交互技术的长足进步.从传统的命令行(Command Line Interface,CLI),到图形用户界面(Graphical User Interface,GUI ...

  5. python版植物大战僵尸源码_基于python的植物大战僵尸游戏设计与实现.docx

    湖南理工学院毕业设计(论文) PAGE PAGE 1 学 号 毕业设计(论文) 题目:基于python的植物大战僵尸游戏设计与实现 作 者 届 别 届 院 别 信息与通信工程学院 专 业 信息工程 指 ...

  6. python分布式爬虫开题报告范文_基于Python的豆瓣Top250排行榜影片数据爬取和分析开题报告...

    一.选题依据:(简述研究现状,说明该毕业设计的设计目的及意义) 研究现状 Python是一门很全面的语言,又随着大数据和人工智能的兴起,广受爬虫设计者们的青眯.设计者们运用Python语言的框架-Sc ...

  7. python随机输出52张牌_基于Python制作一副扑克牌过程详解

    整理一下通过本文分享给大家, 该案例是通过 Python 类属性创建一幅除去大王.小王之后的 52 张扑克牌,并实现随机抽牌.排序.洗牌等功能: 创建一个纸牌类 一副扑克除去大王小王之外,剩下的 52 ...

  8. 用python写脚本筛选原创微博_基于python编写的微博应用

    本文实例讲述了基于python编写的微博应用,分享给大家供大家参考.具体如下: 在编写自己的微博应用之前,先要到weibo开放平台申请应用的公钥和私钥. 下载python版的SDK,打开example ...

  9. python中sample是什么意思_基于Python中random.sample()的替代方案

    python中random.sample()方法可以随机地从指定列表中提取出N个不同的元素,但在实践中发现,当N的值比较大的时候,该方法执行速度很慢,如: numpy random模块中的choice ...

最新文章

  1. 使用html格式,通过php调用数据库并显示数据
  2. java for 最后_Java的for循环中调用了查询服务,最后只打印了循环的最后一条数据(循环次数)次...
  3. 浅谈SpringCloud (二) Eureka服务发现组件
  4. 开源大数据周刊-第103期
  5. 操作系统的中断和异常
  6. html捉虫游戏,幼儿园体育游戏《小鸡捉虫》教案(精选4篇)
  7. 【ElasticSearch】Es 源码之 Discovery DiscoveryModule 源码解读
  8. Ice简介+Qt代码示例
  9. GifUtil给gif图片添加文字、图片水印
  10. 【电源模块】TPS54331 DCDC降压芯片设计
  11. 软件使用-如何卸载360安全客户端
  12. (web前端每日一练)用JavaScript制作一个跟随鼠标的小球炫彩动画 /doge/doge
  13. 整数的分类处理 C++
  14. [源码、文档、分享] iOS/iPhone学习系列、代码教程----~~~持续更新中~~~
  15. 两性情感关系中的核心价值是什么?
  16. java获取指定格式的年月日时分秒时间
  17. 二叉树:广义表搭建二叉树
  18. 咸鱼硬件—Micropython介绍
  19. js继承的六种方式详解--认真看完你就会了
  20. 嵌入式编程规范及注意事项

热门文章

  1. 计算机国三网络技术,计算机国三网络技术.doc
  2. mysql 行级锁 where_mysql 行级锁的使用以及死锁的预防
  3. UVA 540 Team Queue
  4. Linux文件系统结构
  5. 【Asp.net Core】在 Linux 子系统中安装 nginx 并配置反向代理
  6. 【2017-05-25】WebForm母版页
  7. sql 2005中全文索引的使用
  8. 异常为当IDENTITY_INSERT设置为OFF时 的解决
  9. Web Control开发随笔(4):Control与WebControl 的Properity初探
  10. 发现了一个美图看看软件的一个bug