TCP SocketServer只接受没有传入clien的AF_INET和SOCK_DGRAM的连接

2024-09-28 17:25:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在设置一个用于接收本地连接的基本TCP服务器。我已经用sock=socket.socket(socket.AF_INET,socket.sock_DGRAM)构建了具有套接字的客户端应用程序。我需要客户端能够连接这些参数,即使它们不是必需的。如果传入这两个参数,我的非常简单的服务器不允许这种连接

我已确保我的计算机上的IP和端口可用。我已成功地将UDP客户端连接到一个类似的处理程序,并传入了这些参数。通过将客户端构造为sock=socket.socket(),而不带参数,我获得了一个成功的TCP连接

服务器文件:

class TCPHandler(SocketServer.BaseRequestHandler):
    def handle(self):
        self.data = self.request.recv(1024).strip()
        self.request.sendall(self.data.upper())
...
#(in main)

server = SocketServer.TCPServer((HOST,PORT), TCPHandler)
print "TCP Server Started"

客户端文件:

    try:
        #sock = socket.socket()
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.settimeout(3.0)
        print "Attempting to TCP connection"
        PORT = 53140
        sock.connect((HOST, PORT))
        print "Connected to TCP"
        sock.sendall(data + "\n")
        received = sock.recv(1024)
        sock.close()
    except Exception as e:
        print e

如果以粘贴方式运行代码,则会出现“连接被拒绝”错误。如果改用注释行,TCP连接将正常工作


Tags: 文件self服务器客户端data参数portsocket