繁体   English   中英

不间断服务器客户端连接[Python]

[英]nonstop server client connection[Python]

我想创建一个客户端可以始终连接到服务器的服务器-客户端连接。 我该怎么做? 请帮我。 当我尝试时,发生了这个错误。 “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))  

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

  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))

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

Output:

运行代码的输出

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM