Python客户端不断失去与tcp套接字的连接

何塞·奥尔蒂斯

我正在使用TCP connecton SOCK_STREAM编写python服务器客户端。

我能够从客户端建立一个连接,服务器返回响应。

我第二次失去连接

这是服务器代码

from socket import *
serverSocket = socket(AF_INET, SOCK_STREAM)
serverPort = 62175
serverSocket.bind(('', serverPort))
serverSocket.listen(1)
print('The server is ready to receive information')
connectionSocket, addr = serverSocket.accept()
while True:
       sentence = connectionSocket.recv(1024).decode()
       capitalizedSentence = sentence.upper()
       connectionSocket.send(capitalizedSentence.encode()) 
       connectionSocket.close()

这是客户端的代码

from socket import *
import sys
import re

serverName = 'localhost'
serverPort = 62175
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName, serverPort))
regex = re.compile('[@_!#$%^&*()<>?/\|}{~:]')
done = False
while done == False:
    sentence = input("Input a lowercase sentence: ")
    try:
        inputValue = int(sentence)
        print("Input data is an integer, suppose to be a string, Run the program again")
    except ValueError:     
        try:
            if(regex.search(sentence) == None):   
                if (sentence.lower() == "quit"):
                    done = True
                    clientSocket.close()
                elif (sentence == ""):
                    print("There wasn't any input detected. Try again")
                else:
                    clientSocket.sendall(sentence.encode())
                    modifiedSentence = clientSocket.recv(1024)
                    print(modifiedSentence.decode())
                    print(done)
            else:
                print("String contains special characters, Try again")
        except OSError as err:
            print("OS error: {0}".format(err))

这是我输入第二个输入时的输出和错误

Input a lowercase sentence: test
TEST
False
Input a lowercase sentence: test
OS error: [WinError 10053] An established connection was aborted by the software in your host machine

谢谢您的协助

斯蒂芬·乌尔里希(Steffen Ullrich)

您的服务器在循环内关闭了连接,但尝试通过关闭的套接字进行通信:

connectionSocket, addr = serverSocket.accept()
while True:
       sentence = connectionSocket.recv(1024).decode()
       ...
       connectionSocket.close()

要处理多个连接recvsend在连接内,您应该close仅在实际完成时调用

connectionSocket, addr = serverSocket.accept()
while True:
       sentence = connectionSocket.recv(1024).decode()
       ...
connectionSocket.close()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python tcp套接字客户端

如何处理python asyncio中的tcp客户端套接字自动重新连接?

Python:重新连接客户端套接字

Python套接字等待客户端连接

客户端套接字连接被拒绝

Python 2.7.8:套接字-TCP套接字中的客户端服务器数据丢失

C# UWP 通过套接字连接到 tcp 客户端

指定用于TCP套接字客户端连接的本地端口

TCP套接字服务器使用Spring集成同时处理多个客户端连接

C#TCP套接字服务器客户端连接

TCP套接字服务器/客户端连接应使用哪个IP /端口?

TCP套接字服务器客户端连接fd会导致内存泄漏吗?

客户端断开连接后,C 套接字 TCP 服务器出现故障

C客户端套接字不输出/连接到tcp服务器

TCP套接字从多个顺序客户端转发到与服务器的单个持久套接字连接

Java TCP 客户端/服务器套接字

TCP客户端在android服务中读写套接字

TCP客户端套接字无法在onActivityResult()中运行

在客户端JavaScript中创建TCP / IP套接字

Akka Streams TCP套接字客户端端接

带套接字的TCP客户端/服务器,服务器向客户端发送文件,客户端挂起,Python

Kotlin TCP套接字客户端无法正常工作的Python服务器

如何解决python中TCP套接字客户端部分的阻塞问题?

通过python中的TCP套接字在客户端-服务器之间发送文件?

在FTP客户端套接字程序中拒绝连接

通过套接字连接从kext验证客户端

将客户端重新连接到不同的套接字

C ++套接字客户端断开连接

将客户端套接字连接到Cookie