2016-11-26 101 views
1

我看到过类似的问题,但他们无法修复此错误。我和我的朋友正在做一个聊天程序,但我们不断收到错误 ConnectionRefusedError:[Errno 61]连接被拒绝 我们在不同的网络上。 这里是我的服务器Python ConnectionRefusedError:[Errno 61]拒绝连接

import socket 

def socket_create(): 
try: 

    global host 
    global port 
    global s 
    host = '' 
    port = 9999 
    s = socket.socket() 

except socket.error as msg: 
    print("Socket creation error" + str(msg)) 

#Wait for client, Connect socket and port 
def socket_bind(): 
try: 
    global host 
    global port 
    global s 
    print("Binding socket to port: " + str(port)) 
    s.bind((host, port)) 
    s.listen(5) 
except socket.error as msg: 
    print("Socket binding error" + str(msg) + "\n" + "Retrying...") 
    socket_bind 

#Accept connections (Establishes connection with client) socket has to  be listining 
def socket_accept(): 
    conn, address = s.accept() 
    print("Connection is established |" + " IP:" + str(address[0]) + "| port:" + str(address[1])) 
chat_send(conn) 


def chat_send(conn): 
while True: 
    chat =input() 
    if len(str.encode(chat)) > 0: 
     conn.send(str.encode(chat)) 
     client_response = str(conn.recv(1024), "utf-8") 
    print(client_response) 
def main(): 
socket_create() 
socket_bind() 
socket_accept() 

main() 

代码和我的客户端代码

import socket 


#connects to server 
s = socket.socket() 
host = '127.0.0.1' 
port = 9999 
s.connect((host, port)) 

#gets chat 
while True: 
    data = s.recv(1024) 
    print (data[:].decode("utf-8")) 
    chat = input() 
    s.send(str.encode(chat)) 

回答

2

'127.0.0.1'意味着本地计算机 - 在同一台计算机上的服务器,使客户端connents。客户端必须使用来自服务器的IP - 如192.168.0.1

检查服务器:

在Windows(在cmd.exe

ipconfig 

在Linux(控制台)

ifconfig 

但如果你是在不同的网络,那么它可能无法正常工作。 ipconfig/ifconfig返回仅在本地网络中可见的本地IP(如192.168.0.1)。然后,您可能需要外部IP并在您的和提供商路由器上设置(重定向)。外部IP可以是您的路由器或提供商路由器的IP。当您访问这样的网页时,您可以看到您的外部IP地址http://httpbin.org/ip。但它仍然可能需要一些工作来解决这个问题。

0

这可能不会回答你原来的问题,但是我遇到了这个错误,它只是简单地说我没有启动服务器进程首先在我选择测试的端口上监听本地主机(127.0.0.1)。为了让客户端连接到本地主机,服务器必须在本地主机上侦听。