【发布时间】:2016-03-04 14:36:11
【问题描述】:
我想知道当服务器与特定端口中的客户端连接时发生的异常名称,并且另一个客户端想从该端口连接到服务器...
所以我创建了服务器、客户端 1 和客户端 2,但是当服务器和客户端 1 连接在一起并且我运行客户端 3 时,它们惊人地没有任何错误,它们都继续运行。
我想知道为什么我没有收到任何错误?
'1' 在这一行中的确切作用是什么:serverSocket.listen(1)
这是服务器代码:
import socket
serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serverSocket.bind(('', 80))
print("Host=%s" %str(serverSocket.getsockname()))
serverSocket.listen(1)
clientSocket, addr = serverSocket.accept()
print("Got a connection from %s" % str(addr))
data = clientSocket.recv(1024)
print("from Client:%s "%str(addr))
print("\n data:%s "%str(data.decode("utf-8")))
#consciously i didn't close the the sockets
客户端1:
import socket
TCP_IP = '127.0.0.1'
TCP_PORT = 80
BUFFER_SIZE = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(bytes("test code", 'utf-8'))
data = s.recv(BUFFER_SIZE)
print(type(data))
s.close()
客户端2
import socket
TCP_IP = '127.0.0.1'
TCP_PORT = 80
BUFFER_SIZE = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(bytes("test3", 'utf-8'))
data = s.recv(BUFFER_SIZE)
print(type(data))
s.close()
其他,为什么当我运行 client2 时,服务器没有显示任何从中获得连接的消息,例如:
Got a connection from ('127.0.0.1', 64358)
【问题讨论】:
-
client2 真的连接到
127.0.0.2而不是127.0.0.1? -
@SimonFraser 对不起,这是我的错,这是本地的 ...
-
listen(1)可能是您没有收到错误消息的原因。这是积压 - 例如,您的服务器正在与 client1 交谈,与服务器交谈的等待队列长度允许为 1,因此 client2 正在排队等待,但连接永远不会accept()ed,因为那部分服务器不在循环中。 -
积压有时间限制吗???如果没有,你的意思是当我尝试将三个客户端连接到我的服务器时会出错???
-
@SimonFraser 我可以将积压设置为零吗?
标签: python python-2.7 exception server client