服务器/客户端连接(Python)

时间:2014-01-19 06:12:01

标签: python networking

这是我的服务器代码:

import socket

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "192.168.1.3"
port = 8000
print (host)
print (port)
serversocket.bind((host, port))

serversocket.listen(5)
print ('server started and listening')
while 1:
    (clientsocket, address) = serversocket.accept()
    print ("connection found!")
    data = clientsocket.recv(1024).decode()
    print (data)
    clientsocket.send("data is sent".encode())

和客户:

import socket

s = socket.socket()
host ="59.93.199.XXX"
port =8000
s.connect((host,port))
s.send('randomData'.encode())
data = ''
data = s.recv(1024).decode()
print (data)
s.close

我希望这可以通过互联网在两台计算机上运行。 当我把host =“192.168.1.3”放在客户端时,它工作正常,但这只适用于连接到同一网络的计算机。 问题是,当服务器运行时,我在线检查开放端口,服务器显示“找到连接”,但它没有通过客户端连接到服务器。 我究竟做错了什么 ? PORT 8000已开放。

192.168.1.3是我的计算机的IP,192.168.1.1是网关 当我运行客户时我得到的错误:

  

Traceback(最近一次调用最后一次):文件   “C:\ Users \ Harsh's \ Desktop \ aaa.py”,第6行,in       s.connect((host,port))ConnectionRefusedError:[WinError 10061]无法建立连接,因为目标计算机主动拒绝   它

1 个答案:

答案 0 :(得分:1)

  

跨越互联网的两台计算机

在这种情况下,您的服务器需要一个公共的静态地址,或者您必须配置路由器以将路由8000的传入连接路由到服务器(NATting,PATting等)。(NATting,PATting等)。

谁的地址是“59.93.199.XXX”?你的路由器?然后你需要进行翻译/重定向/链接。

经过一些测试,问题显示为:

s = socket.socket()

而不是

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)