Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
实验性python tcp代理不工作_Python_Sockets_Tcp - Fatal编程技术网

实验性python tcp代理不工作

实验性python tcp代理不工作,python,sockets,tcp,Python,Sockets,Tcp,我刚刚尝试实现一个python应用程序,它的作用类似于端口22的代理 代码如下: import socket import select import code inputSock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) inputSock.bind( ('',9999) ) inputSock.listen(5) socks = {} #a dictionary! #Now, wait for an input! while 1:

我刚刚尝试实现一个python应用程序,它的作用类似于端口22的代理 代码如下:

import socket
import select
import code
inputSock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
inputSock.bind( ('',9999) )
inputSock.listen(5)
socks = {} #a dictionary!

#Now, wait for an input!
while 1:
    #accept new conns
    (sread,swrite,sexec) = select.select([inputSock],[],[])
    for sock in sread:
        print("Got an input!")
        newsock,(remhost,remport) = sock.accept()
        sendsock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        try:
            print("Now connecting to the centOS...")
            sendsock.connect( ('202.131.30.12',80))
        except:
            print("ERROR: cannot connect to host 192.168.52.128:22")
        print("successfully connected to Cent. Creating new socks")
        socks[id(sendsock)] = newsock
        socks[id(newsock)] = sendsock
        print("socks created!")
    #recv from socks, etc.
    (sread,swrite,sexec) = select.select(socks.values(),[],[])
    for sock in sread:
        print("got input!")
        data = sock.recv(700)
        print(data)
        if(data == ""):
            #remove that sock.
            id1 = id(sock)
            id2 = id(socks[id1])
            socks.pop(id1)
            socks.pop(id2)
            print("removed empty conns")
        else:
            #code.interact(globals=globals())
            sendSock = socks[id(sock)]
            sendSock.send(data)
            print("data sent!")
现在,当我运行脚本并将浏览器指向127.0.0.1:9999时,我的浏览器将无法获得处于某种“永远加载网页”状态的网页。这是我从python提示符中得到的:

你能帮我找到哪里出了问题并修复这个实验实现吗? 或者给我一些链接,让我有个想法?
谢谢:

您已经从浏览器中读取了HTTP请求的部分数据,并将其发送到另一个套接字上的服务器。然后外部循环将您带回侦听套接字上的select,该套接字阻止等待新连接,因此您被卡住了


将两个调用合并为一个。只需为侦听套接字制作一个特殊的案例。

请将输出文本复制到您的帖子中;截图几乎是无用的。而且,你似乎忘记了在你的问题中包含一个实际问题。怎么了?你期望发生什么呢?好的@MartijnPieters-我想我应该手动输入输出:看看如何从控制台复制到剪贴板。谢谢!我想我只是复制粘贴。