#coding:utf-8
__author__ = 'similarface' import os,socket,threading,SocketServer
SERVER_HOST='localhost'
SERVER_PORT=0
BUF_SIZE=1024
ECHO_MSG='HELLO' class ThreadClient():
def __init__(self,ip,port):
#建立sock
self.sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#连接server
self.sock.connect((ip,port)) def run(self):
#获取当前的进程号
current_process_id=os.getpid()
print 'PID %s :" "%s"'%(current_process_id,ECHO_MSG)
sent_data_length = self.sock.send(ECHO_MSG)
print('发送:%d 长数据' % sent_data_length)
#sever response
response=self.sock.recv(BUF_SIZE)
print "PID %s received: %s" % (current_process_id,response) def shutdown(self):
'''
清理sock的资源
:return:
'''
self.sock.close() class ForkingServerRequestHandler(SocketServer.BaseRequestHandler):
def handle(self):
#接受客户端的数据
data=self.request.recv(BUF_SIZE)
#当前的进程号码
#current_process_id=os.getpid()
current_thread = threading.current_thread()
#返回的数据包
response='%s: %s' % (current_thread.name, data)
print "服务器返回 [current_process_id: data] =[%s]" %response
#发送返回数据
self.request.send(response)
return class ForkingServer(SocketServer.ThreadingMixIn,SocketServer.TCPServer):
pass def main():
#建立server
server=ForkingServer((SERVER_HOST,SERVER_PORT),ForkingServerRequestHandler)
#获取IP 和 端口
ip, port = server.server_address # Retrieve the port number
#服务进程
server_thread = threading.Thread(target=server.serve_forever)
#是否放入后台
server_thread.setDaemon(True) # don't hang on exit
#启动
server_thread.start()
print 'Server loop running PID: %s' %os.getpid()
# Launch the client(s)
client1 = ThreadClient(ip, port)
client1.run()
client2 = ThreadClient(ip, port)
client2.run()
# Clean them up
server.shutdown()
client1.shutdown()
client2.shutdown()
server.socket.close()
if __name__ == '__main__':
main()

  

python网络编程socket之多线程的更多相关文章

  1. Python网络编程socket

    网络编程之socket 看到本篇文章的题目是不是很疑惑,what is this?,不要着急,但是记住一说网络编程,你就想socket,socket是实现网络编程的工具,那么什么是socket,什么是 ...

  2. Day07 - Python 网络编程 Socket

    1. Python 网络编程 Python 提供了两个级别访问网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...

  3. python网络编程-socket编程

     一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...

  4. python网络编程socket /socketserver

    提起网络编程,不同于web编程,它主要是C/S架构,也就是服务器.客户端结构的.对于初学者而言,最需要理解的不是网络的概念,而是python对于网络编程都提供了些什么模块和功能.不同于计算机发展的初级 ...

  5. python --- 网络编程Socket

    网络编程 定义:所为网络编程即是对信息的发送和接收. 主要工作: (1)发送端:将信息以规定的协议组装成数据包. (2)接收端:对收到的数据包解析,以提取所需要的信息. Socket:两个在网络上的程 ...

  6. Day10 Python网络编程 Socket编程

    一.客户端/服务器架构 1.C/S架构,包括: 1.硬件C/S架构(打印机) 2.软件C/S架构(web服务)[QQ,SSH,MySQL,FTP] 2.C/S架构与socket的关系: 我们学习soc ...

  7. Python网络编程—socket(二)

    http://www.cnblogs.com/phennry/p/5645369.html 接着上篇博客我们继续介绍socket网络编程,今天主要介绍的内容:IO多路复用.多线程.补充知识点. 一.I ...

  8. Python网络编程—socket(一)

    从今天开始python基础就介绍完毕了,下面我们将进阶到socket网络编程的介绍,那么socket是什么呢?我们带着这个问题开始今天的介绍: 一.socket初探 socket通常也称作" ...

  9. Python网络编程-Socket简单通信(及python实现远程文件发送)

    学习python中使用python进行网络编程,编写简单的客户端和服务器端进行通信,大部分内容来源于网络教程,这里进行总结供以后查阅. 先介绍下TCP的三次握手: 1,简单的发送消息: 服务器端: i ...

随机推荐

  1. SQL与C#结合完整修改 删除信息

    --SQl中--建立ren的数据库,插入一条信息 create database ren go use ren go create table xinxi ( code ) primary key,- ...

  2. P2679 子串

    http://www.luogu.org/problem/show?pid=2679 题目描述 有两个仅包含小写英文字母的字符串 A 和 B.现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后 ...

  3. java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal

    今天用maven编写Selenium测试程序时,调用 HtmlUnitDriver driver = new HtmlUnitDriver(true); 反法时报错如下: java.lang.NoCl ...

  4. zookeeper系列之二—zookeeper历史

    Zookeeper是什么? Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby的一个开源版本.它是为分布式应用提供一致性服务的软件,提供的功能包括:配置服 ...

  5. 【MySQL】MySQL的find_in_set的使用例子

    > 参考的优秀文章 FIND_IN_SET(str,strlist) > 简单的例子 这个函数的功能是,在第二个参数中寻找第一个参数,并返回第一个参数所在的位置,不存在则返回0.其中,第二 ...

  6. Java获取音频文件(MP3)的播放时长

    最近的一个项目需要按照时间播放mp3文件,例如,播放10分钟的不同音乐. 这就意味着我得事先知道mp3文件的播放时长,以决定播放几遍这个文件. 方案一:Java的方式 找第三方的库,真的感谢这些提供j ...

  7. Linux TOP命令详解

    先来看一下执行以后的结果: 各项数值的含义如下: 第一行是任务队列信息. :: 当前时间 up days,: 系统运行时间,格式为天,时:分 user 当前登录用户数 load average: 0. ...

  8. emacs学习

    (set-default-font "Consolas-14")      // 设置字体及其大小 M-数字 命令 C-数字 命令

  9. [SAP ABAP开发技术总结]Form(subroutine)、Function参数传值传址

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  10. getting started with Baxter Research Robot

    1. Baxter Research Robot Baxter Research Robot is from Rethink Robotics. There is also a video on TE ...