Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
服务器/客户端连接(Python)_Python_Networking - Fatal编程技术网

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

服务器/客户端连接(Python),python,networking,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

这是我的服务器代码:

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”放入客户机时,它可以正常工作,但这仅适用于连接到同一网络的计算机。 问题是,当服务器运行时,我在线检查开放端口,服务器显示“已找到连接”,但它不通过客户端连接到服务器。 我做错了什么? 8000端口是开放的

192.168.1.3是我的计算机的IP,192.168.1.1是网关 运行客户端时出现的错误:

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

在互联网上的两台计算机之间

在这种情况下,您的服务器需要一个公共静态地址,或者您必须配置路由器来路由端口8000的传入连接,以便重定向(转换)到服务器(NATting、PATting等)

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

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

s = socket.socket()
而不是

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

它是定向的。www.yourgetsignal.com显示其打开状态。我有动态ip,但没有重置,为什么它不能工作?在这种情况下,将服务器绑定到它的公共地址,而不是本地地址。或者将它绑定到所有可用的接口。我是一个noob,请更详细地解释,如果我在服务器中设置host=in,它会显示错误。我认为服务器是正常的,因为当我检查开放端口时,它会显示已连接的消息。我认为问题在于客户端在服务器脚本中使用了
host='
(所有接口)。我不太喜欢Windows,但10061听起来像是路由器在转换端口,但在目标计算机上没有运行匹配的服务。