首页 > 解决方案 > Python 套接字中的断管

问题描述

我编写了一个简单的应用程序,它从文本文件中读取每个单词并报告有关单词的各种统计信息。一个文件读取文件中的每个单词,并使用 Python 的套接字库将每个单词发送到服务器。这对于滞后和停止停止之前的前几个单词效果很好。当我杀死服务器和客户端时,我收到了客户端的管道损坏错误消息

Traceback (most recent call last):
  File "client.py", line 27, in <module>
    read_file()
  File "client.py", line 19, in read_file
    s.sendall(message_byte)
BrokenPipeError: [Errno 32] Broken pipe

这是我的client.py的代码:

import socket
import time
host = socket.gethostname()
port = 12345                   # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
def read_file():
    with open('../DataSet/ToTheLighthouse.txt','r') as file:
        index = 0
        for line in file:
            for word in line.split():

                word_lower = word.lower()
                word_stripped = ''.join([i for i in word_lower if i.isalpha()])

                index_str = str(index)
                message_byte = word_stripped.encode('utf-8')
                s.sendall(message_byte)
                time.sleep(1)
                data = s.recv(1024)
                index+=1
        print('Received', repr(data))

read_file()
s.close()

对于server.py:

import socket

vowel = "aeiou"

host = ''        
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))

print(f"Host:{host}\tPort:{port}")
s.listen(1)
conn, addr = s.accept()
print(f'Connected by{addr}')
while True:
    try:
        data = conn.recv(1024)

        if not data:
            print("broke")
            break

        is_boat  = lambda string: "boat" in string
        starts_with_vowel = lambda char: "char" in vowel
        data = str(data)
        data = data[1:]
        data = ''.join([i for i in data if i.isalpha()])
        print(data)
        word_len = len(data)



        print(f"Word Length:{word_len}\n")
        print(f"Has Boat: {is_boat(data)}")
        print(f"Vowel Start: {starts_with_vowel(data[0])}")
        conn.sendall(b"Server Says:hi")

    except socket.error:
        print("Error Occured.")
        break

conn.close()

我正在努力查看导致此问题的原因,如果有人可以提供任何指导,我将不胜感激。谢谢你。

标签: pythonpython-3.xsocketspython-sockets

解决方案


推荐阅读