python之多线程socket服务实现

原创 2015年11月19日 01:10:05

## Listen & Read服务(多线程模型响应请求)

import threading
import socket
import time

encoding = 'utf-8'
BUFSIZE = 1024

# a read thread, read data from remote
class Reader(threading.Thread):
    def __init__(self, client):
        threading.Thread.__init__(self)
        self.client = client
        
    def run(self):
        while True:
            data = self.client.recv(BUFSIZE)
            if(data):
                string = bytes.decode(data, encoding)
                print "from client::",string,""
                self.client.send("return frome server::" + string)
            else:
                break
        print "close:", self.client.getpeername()
        
    def readline(self):
        rec = self.inputs.readline()
        if rec:
            string = bytes.decode(rec, encoding)
            if len(string)>2:
                string = string[0:-2]
            else:
                string = ' '
        else:
            string = False
        return string

# a listen thread, listen remote connect
# when a remote machine request to connect, it will create a read thread to handle
class Listener(threading.Thread):
    def __init__(self, port):
        threading.Thread.__init__(self)
        self.port = port
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        self.sock.bind(("0.0.0.0", port))
        self.sock.listen(0)
    def run(self):
        print "listener started"
        while True:
            client, cltadd = self.sock.accept()
            print "accept a connect..."
            Reader(client).start()
            cltadd = cltadd
            print "accept a connect(new reader..)"

lst  = Listener(9011)   # create a listen thread
lst.start() # then start

# Now, you can use telnet to test it, the command is "telnet 127.0.0.1 9011"
# You also can use web broswer to test, input the address of "http://127.0.0.1:9011" and press Enter button
# Enjoy it....


相关文章推荐

用Python写的一个多线程TCP通信实例

用Python写的一个多线程TCP通信实例,实现了JSON数据的传输。 闲言少述,直接上代码 一、客户端 #!/usr/bin/env python # -*- coding:utf-8 -*- #...

【python网络编程】多线程实现多用户全双工聊天

多对多全双工聊天通信 我们将服务器做为中转站来处理信息,一方面与客户端互动,另一方面进行消息转发。 大体思路确定下来后,需要确定一些通信规则: 1. 客户端与服务器建立连...

python socket 多线程通讯

#!/usr/bin/evn python """ 这是一个Socket+多进程的例子(聊天服务端) 2010年7月4日 by HK 转载请注明出处:http://www.ohko.cn/ """  ...

python多线程socket编程--多客户端接入

Python socket通信,python socket编程,python多线程,python socket通信,python SocketServer...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

smbd和nmbd

//感激:http://hi.baidu.com/afantihome/blog/item/7688db649be412f7f636547c.html Samba由两个主要程序组成,它们是smbd和n...
  • blankpro
  • blankpro
  • 2013年11月24日 16:52
  • 13896

libjingle源码分析之二:Thread和SocketServer

摘要       本文主要分析了libjingle源码中的Thread和SocketServer模块,以及它们是如何协同工作的。首先,介绍了Thread和SocketServer的模型,给出了如...

Python使用TCPServer编写(多线程)Socket服务

SocketServer包对socket包进行了包装(封装),使得创建socket服务非常简单。 TCPServer+BaseRequestHandler 使用TCPServer和BaseRe...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python之多线程socket服务实现
举报原因:
原因补充:

(最多只允许输入30个字)