如何在循环中使用相同的套接字?

时间:2019-01-04 19:21:38

标签: python sockets reset

我收到了不同客户端的IP和端口列表。该客户端正在侦听并且始终会接受连接。因此,我必须获取所有IP和端口以将txt文件发送给客户端。我已经尝试过2位客户。首先,文件成功发送,但是与下一个客户端永远不会传输文件。 我已经阅读了一些帖子,我认为可能是由于快速使用具有相同端口和IP的相同套接字(我无法更改端口)

try:
    st = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
except socket.error:
    print "Error al crear socket TCP"
    sys.exit()

try:
    st.connect((str(ipx),int(portx)))
except socket.error:
    print "Error al realizar la conexion TCP con el cliente de 
        puerto " + str(portx)
    sys.exit()
tam = os.stat(sys.argv[2]).st_size
nom = sys.argv[2]
mssg = nom + " " + str(tam)
st.send(mssg)
try:
    st.settimeout(3)
    resplyc = st.recv(1024)
except socket.timeout:
    print "Error: No hay respuesta por parte del cliente " + ipx + " 
        en el puerto " + str(portx)
    st.close()
    sys.exit()


st.send(fich.read())
try:
    st.settimeout(10)
    resplyc2= st.recv(1024)
except socket.timeout: # I always get this exception
    print "Error en la transferencia con cliente " + ipx
    print "con puerto "+portx
    st.close()
    sys.exit()

st.close()
print 'socket closed'

这在for循环中。与第一个客户的联系和信任总是成功的,但是当我与第二个客户联系时,总是会抛出最后一个异常。

0 个答案:

没有答案