TCP SocketServer仅接受未将AF_INET和SOCK_DGRAM传递到客户端的连接

时间:2019-07-18 17:55:12

标签: python sockets network-programming python-2.x socketserver

我正在设置一个基本的TCP服务器来接收本地连接。我已经有客户端应用程序,其套接字以以下方式构造:sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)。即使不需要这些参数,我也需要客户端能够连接这些参数。如果传入了这两个参数,那么关于我非常简单的服务器的某些操作将不允许此连接。

我确保IP和端口在我的计算机上可用。我已经成功地通过传入的这些参数将UDP客户端连接到了类似的Handler。通过仅将客户端构造为不带参数的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连接有效。

0 个答案:

没有答案