【问题标题】:nonstop server client connection[Python]不间断服务器客户端连接[Python]
【发布时间】:2020-10-09 20:34:53
【问题描述】:

我想创建一个客户端可以始终连接到服务器的服务器-客户端连接。我该怎么做?请帮我。当我尝试时,发生了这个错误。 "ConnectionResetError: [WinError 10054] 现有连接被远程主机强行关闭"

- 代码-

服务器:

import socket
try:
    s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind((host,port))
    s.listen(1)
    conn, addr=s.accept()
    while True:
         conn.send(("Test message").encode())
         print((conn.recv(1024)).decode())
except Exception as error:
    print(str(error)) 

客户:

import socket    
try:   
    s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((server_host,port))
    while True:

         print((s.recv(1024)).decode())
         s.send(("Test message").encode())
except Exception as error:
    print(str(error))  

【问题讨论】:

标签: python sockets websocket connection client-server


【解决方案1】:

一些原因导致此错误消息:

  1. 服务器重新使用了连接,因为它已经空闲太久了。
  2. 可能是客户端 IP 地址或端口号与服务器不同。
  3. 服务器和客户端之间的网络可能暂时中断。
  4. 服务器一开始没有启动。

您的代码似乎没问题。 您是先运行服务器然后再运行客户端吗?请确认。以下代码在我的电脑上经过全面测试。

服务器:

import socket

HOST = '127.0.0.1'  # (localhost)
PORT = 65432        # Port to listen on

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen()
    conn, addr = s.accept()

    while True:
        data = conn.recv(1024).decode()
        if not data:
            break
        conn.send(data.encode())

客户

import socket

HOST = '127.0.0.1'  # Server's IP address
PORT = 65432        # Server's port

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))

    while True:
        s.send(("Hi server, send me back this message please").encode())
        data = s.recv(1024).decode()
        print('(From Server) :', repr(data))

注意:先运行服务器,再运行客户端。

输出:

【讨论】:

  • 嘿。感谢您的回复。但这对我不起作用。仍然出现错误。
  • 哦!,您是否在本地计算机 (172.0.0.1) 上尝试过?如果是这样,如果您在有防火墙的公司网络内,可能会出现代理配置问题。检查您的网络连接。
猜你喜欢
  • 2015-01-15
  • 2020-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多