作家
登录

聊聊端口复用的实现和坑点

作者: 来源: 2017-11-08 14:02:17 阅读 我要评论

  •         return -1; 
  •     } 
  •     //数据交换处理 
  •     while (1) 
  •     { 
  •         num = recv(ss, buf, 4096, 0); 
  •         if (num > 0){ 
  •             send(conn_sock, buf, num, 0); 
  •         } 
  •         else if (num == 0) 
  •         { 
  •             break; 
  •         } 
  •         num = recv(conn_sock, buf, 4096, 0); 
  •         if (num > 0) 
  •         { 
  •             send(ss, buf, num, 0); 
  •         } 
  •         else if (num == 0) 
  •         { 
  •             break; 
  •         } 
  •     } 
  •     closesocket(ss); 
  •     closesocket(conn_sock); 
  •     return 0; 
  • 还有一种办法就是端口秋蓬勃到端口复竽暌姑的效不雅,我们用lcx等端口转发对象也可以实现一致效不雅,不过隐蔽性就不是很好了,不过照样提一下吧。

    起首定义两个函数,一个 server 端和一个 connect 端, server 用于绑定端口, connect 用于连接转发端口。

    这里的 select 来处理套接字壅塞问题, get_stream() 函数用于交换 sock 流对象,如许做的好处是两边分工明白,避免纷乱, ex_stream() 函数用于流对象的数据转发。 Connect() 函数里多了个时光┞菲握,控制连接超时和等待连接,避免连接掉足异常。

    然而事实是 select 控制壅塞后, 3389 端口的连接无法正常通信,其他短暂性连接套接字不受影响。

    1. def get_stream(flag): 
    2.    pass 
    3. def ex_stream(host, port, flag, server1, server2): 
    4.    pass 
    5. def server(port, flag): 
    6.     host = '0.0.0.0' 
    7.     server = create_socket() 
    8.     server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
    9.     server.bind((host, port)) 
    10.     server.listen(10) 
    11.     while True
    12.          infds,outfds,errfds=select.select([server,],[],[],5) 
    13.         if len(infds)!= 0:  
    14.             conn, addr = server.accept() 
    15.             print ('[+] Connected from: %s:%s'

        推荐阅读

        Netcraft 10月Web服务器排名:Nginx首超微软排第二

      Netcraft 宣布了2017年10月 Web 办事器查询拜访申报,本月 Netcraft一共统计了1,815,237,491 个站点和 6,886,362 台收集计算机,排名前三的依然是 Microsoft、Apache 和 nginx 。在 10 月>>>详细阅读


      本文标题:聊聊端口复用的实现和坑点

      地址:http://www.17bianji.com/lsqh/38630.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)