gpt4 book ai didi

python 套接字卡在连接上

转载 作者:太空狗 更新时间:2023-10-30 01:03:35 24 4
gpt4 key购买 nike

我正在尝试使用 socket 模块在 python 中创建一个透明代理。但由于某种原因,它卡在 connect()ing 套接字上。这是我正在使用的代码:

from __future__ import division
import socket
import struct
#import mcpackets
import sys
import time
#CUSTOM SETTINGS
HOST="192.168.178.28"
PORT=25565
#END CUSTOM SETTINGS

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('',25565))
serversocket.listen(1)
print "waiting for client, press multiplayer and use 'localhost' as server"
clientsocket,address=serversocket.accept()
print "client connected from %s:%d"%address
serversocket.close()
print "connecting to '%s:%d'"%(HOST,PORT)
serversocket=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print "socket created."
serversocket.connect((HOST,PORT))#------------------------------ freezes here
print "socket connected."
serversocket.settimeout(0)
clientsocket.settimeout(0)
print "timeouts set."
print "now proxying."
#tdata=[]
try:
while(True):
dat=None
try:
dat=clientsocket.recv(4096)
except socket.timeout:
pass

if(dat!=None):
try:
serversocket.send(dat)
except socket.timeout:
pass
#vice versa
dat=None
try:
dat=serversocket.recv(4096)
except socket.timeout:
pass
if(dat!=None):

try:
clientsocket.send(dat)
except socket.timeout:
pass
except:
clientsocket.close()
#with open("data.log","w") as fid:
# fid.write(''.join(tdata))
raise

问题不在于网络,因为直接连接到服务器工作正常。有什么问题吗?

最佳答案

这是 TCP 套接字实现的一部分,在最近断开同名套接字后,操作系统拒绝允许新的套接字连接。

为了强制这个请求,在连接它之前在你的套接字上设置 REUSEADDR 套接字选项(对于你的两个服务器套接字创建):

serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

这样在你关闭第一个服务器套接字后,当你想连接新的服务器套接字(具有相同的主机,端口)时,操作系统不会拒绝。

关于python 套接字卡在连接上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7214553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com