我正在设置一个基本的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连接有效。