简体   繁体   English

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

[英]nonstop server client connection[Python]

I want to create a server-client connection that the client can always be connected to the server.我想创建一个客户端可以始终连接到服务器的服务器-客户端连接。 How can I do it?我该怎么做? Please help me.请帮我。 when I was trying, this error occurred.当我尝试时,发生了这个错误。 "ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host" “ConnectionResetError: [WinError 10054] 现有连接被远程主机强行关闭”

- code - - 代码 -

server:服务器:

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

client:客户:

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

Some reasons cause this error message:一些原因导致此错误消息:

  1. Server reused the connection because it has been idle for too long.服务器重用了连接,因为它已经空闲太久了。
  2. May be Client IP address or Port number not same as Server.可能是客户端 IP 地址或端口号与服务器不同。
  3. The network between server and client may be temporarily going down.服务器和客户端之间的网络可能会暂时关闭。
  4. Server not started at first.服务器一开始没有启动。

Your code seems to be OK.您的代码似乎没问题。 Did you run the Server at first time then client?您是第一次运行服务器然后是客户端吗? Please make sure it.请确认。 The below code fully tested on my computer.以下代码在我的计算机上经过全面测试。

Server:服务器:

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

Client客户

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

Note: Run the Server first then Client.注意:先运行服务器,然后运行客户端。

Output: Output:

运行代码的输出

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

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