点对点通讯分为客户端和服务器,多个客户端通过服务器进行信息的交流

服务器端代码  service端

 #!/usr/bin/env python
# -*- coding:utf-8 -*- import SocketServer
import subprocess ## 代号 地址和端口 连接对象
class myconn(object): ##存放连接
listconn = {} ## 地址端口 连接对象
# codeflage = {} ## 代号 地址端号 class MyServer(SocketServer.BaseRequestHandler): def setup(self):
myconn.listconn[self.client_address] = self.request
pass def handle(self):
print("got connection from",self.client_address)
while True:
conn = self.request
data = conn.recv(1024)
if not data:
break
print data #如果目标客户端在发送数据给目标客服端
# 这里可以根据对方的ip和端口号来查找 我这里直接发给每一个用户了
print len(myconn.listconn)
if len(myconn.listconn) > 1:
for i in myconn.listconn.keys():
if self.client_address != i:
myconn.listconn[i].sendall(data)
pass
else: ##不再 则发送数据给客户端
conn.sendall(data)
pass
conn.sendall(data) def finish(self):
del myconn.listconn[self.client_address]
pass
pass if __name__ == '__main__':
server = SocketServer.ThreadingTCPServer(('localhost',8022),MyServer)
print 'waiting for connection...'
server.serve_forever()

客户端代码

 # -*- coding:utf-8 -*-

 from socket import *
import threading HOST = 'localhost' ##
PORT=8022
BUFSIZ = 1024 ##缓冲区大小 1K
ADDR = (HOST,PORT) tcpCliSock = socket(AF_INET,SOCK_STREAM)
tcpCliSock.connect(ADDR) class inputdata(threading.Thread):
def run(self):
while True:
data = raw_input('> ')
tcpCliSock.send(data)
pass class getdata(threading.Thread):
def run(self):
while True:
data = tcpCliSock.recv(BUFSIZ)
print data
pass def main():
myinputd = inputdata()
mygetdata = getdata()
myinputd.start()
mygetdata.start()
myinputd.join()
mygetdata.join() if __name__ == '__main__':
main()

程序需要先运行服务端在运行多个客户端,多个客户端可已进行通讯

python 客户端点对点通信小案例的更多相关文章

  1. Python:通过一个小案例深入理解IO多路复用

    通过一个小案例深入理解IO多路复用 假如我们现在有这样一个普通的需求,写一个简单的爬虫来爬取校花网的主页 import requests import time start = time.time() ...

  2. Python的应用小案例

    1.python统计文本中每个单词出现的次数: #coding=utf-8__author__ = 'zcg' import collectionsimport os with open('abc.t ...

  3. Python Django 实用小案例2

    动态导入模块 Django返回序列化数据  动态导入模块 在Django里面,经常会看到一些方法或者类是动态导入,尤其是以settings文件为代表,经常把一些类放在里面动态调配,比如随便拿Djang ...

  4. 6.Python使用Pandas小案例

    1.使用以下命令引入Pandas和xlrd,引入成功后在pycharm的setting导入即可使用(pip3是由于个人python版本为3.6)==在dos命令行输入以下信息 pip3 install ...

  5. 15.Selenium+Python滑动解锁小案例

    1.代码实现 from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChai ...

  6. Turtle绘图——python简单上手小案例

    Turtle绘图 Turtle模块提供了在二维平面上移动的环境. Turtle可以实现位置.航向和各种可能的状态和动作. import turtle as tu roo = tu.Turtle() # ...

  7. python 之 Django 小案例

    一, F  Q # F 使用查询条件的值 # # from django.db.models import F # models.Tb1.objects.update(num=F('num')+1) ...

  8. python购物车小案例

    python购物车小案例# 案列描述:有一个小型水果店里面有水果(苹果:¥8/kg,香蕉:¥5/kg,芒果:¥15/kg,葡萄:¥12/kg),客户带了100元钱进店选购水果.# 1.客户输入相应序号 ...

  9. Python 小案例实战 —— 简易银行存取款查询系统

    Python 小案例实战 -- 简易银行存取款查询系统 涉及知识点 包的调用 字典.列表的混合运用 列表元素索引.追加 基本的循环与分支结构 源码 import sys import time ban ...

随机推荐

  1. 让vs IIS Express支持本地静态Json文件

    根据前辈的解决方案是IIS Express没有配置Json文件的处理程序,只要增加对应配置即可,IIS Express 对应配置文件夹为: “%UserProfile%\Documents\IISEx ...

  2. flask学习(十):模板中访问模型和字典的属性

    访问模型中的属性或者是字典,可以通过{{params.property}}的形式,或者是使用{{params['age']}}这样的形式

  3. cowsay

    # apt install cowsay sl cmatrix $ cowsay "hello~" $ find /usr/share/cowsay/cows -iname &qu ...

  4. dom&bom的起源,方法,内容,应用

    Document Object Model的历史可以追溯至1990年代后期微软与Netscape的"浏览器大战"(browser wars),双方为了在JavaScript与JSc ...

  5. Linux运维学习第一天!

    第一步: 申请了一个腾讯的云主机!!!过程还是挺复杂的...配置有点低,满足初步学习需求就行啦(报了个培训班给送的,感觉不咋地道,太抠门) 服务器:北京 机型:标准型 镜像:公共镜像 系统:CentO ...

  6. printf %m

    最近看别人的项目发现有 printf("%m") 这种写法,这是什么输出格式呢? 通过 man 查找得知: m (Glibc extension.) Print output of ...

  7. 024——VUE中filter的使用

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. C++多线程1.createthread

    C++ 多线程知识1.多线程入门 CreateThread 20131021 1.介绍WinAPI中的CreateThread 函数原型: HANDLE WINAPI CreateThread( LP ...

  9. Java--------------Windows下Redis的安装使用

    摘要 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted s ...

  10. CMDB Autoclient思路分析

    1.start.py里的script.run():执行run函数--> 2.script.py run方法--> 3.判断模式MODE(Agent/SSHSALT)-->4.执行cl ...