玩蛇网提供最新Python编程技术信息以及Python资源下载!

Python关于端口复用及线程操作方法

python 培训

以下代码是Python关于端口复用及线程操作方法,适用于windows和linux系统。

思路是:
(1)判断是否是浏览器提交的数据如果是则将提交的数据转发至本地环回地址的80端口
(2)将服务器发送的数据发回客户端
(3)如果数据不是浏览器提交则将其转发至本地的22端口
(4)使用select函数进行非阻塞操作

python 端口复用

#coding=utf-8

import socket
import sys
import select
import threading

host='192.168.99.100'
port=80
#www.iplaypython.com

class Thread(threading.Thread):
    def __init__(self,buf,sockfd):
        threading.Thread.__init__(self)
        self.buf=buf
        self.sockfd=sockfd

    def run(self):
      if len(self.buf)!=0:

        if 'GET' in self.buf :    #判断是否是浏览器提交的数据如果是则将提交的数据转发至本地环回地址的80端口
          s2=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
          s2.connect(('127.0.0.1',80))
          s2.send(self.buf)
          bufer=''

          while 1:
            recv_data=s2.recv(1024)
            bufer+=recv_data

            if len(recv_data)==0:
              break

          print bufer,len(bufer) 

          if len(bufer)==0:
            pass           

          self.sockfd.send(bufer)    #将服务器发送的数据发回客户端
          s2.close
          self.sockfd.close 
          sys.exit()

        else:
          'ps:connect to ssh'  #如果数据不是浏览器提交则将其转发至本地的22端口
          s2=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
          s2.connect(('127.0.0.1',22))
          s2.send(self.buf)
          recv_data=s2.recv(4096)
          conn.send(recv_data)
          self.sockfd.close
          s2.close 

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 )  #端口复用的关键点
s.bind((host,port))
s.listen(10)

while 1:
  infds,outfds,errfds=select.select([s,],[],[],5)  #使用select函数进行非阻塞操作

  if len(infds)!=0:
    conn,(addr,port)=s.accept()

    print 'connected by',addr,port

    data=conn.recv(1024)
    t=Thread(data,conn)
    t.start()

s.close

玩蛇网原创,转载请注明文章出处和来源网址:http://www.iplaypython.com/code/other/o2440.html



微信公众号搜索"玩蛇网Python之家"加关注,每日最新的Python资讯、图文视频教程可以让你一手全掌握。强烈推荐关注!

微信扫描下图可直接关注

玩蛇网Python新手QQ群,欢迎加入: ① 240764603 玩蛇网Python新手群
文章发布日期:2016-04-11 09:35 玩蛇网 www.iplaypython.com

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
相关文章推荐
别人正在看
特别推荐
去顶部去底部