Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python套接字错误号107:未连接传输终结点_Python_Sockets_Tcp - Fatal编程技术网

Python套接字错误号107:未连接传输终结点

Python套接字错误号107:未连接传输终结点,python,sockets,tcp,Python,Sockets,Tcp,编辑:术语RTFM的存在有一个非常好的理由。阅读。。。手工作业。如果我真的读过手册,我就会知道socket.accept()会生成一个客户端套接字,用于与客户端通信。显然你应该用这个 我正在使用套接字用Python编写一个简单的聊天程序。到目前为止,我的代码如下(我是para编码,真正的东西太长了) 服务器类和导入: import socket import os import socket from subprocess import Popen, PIPE import threading

编辑:术语RTFM的存在有一个非常好的理由。阅读。。。手工作业。如果我真的读过手册,我就会知道socket.accept()会生成一个客户端套接字,用于与客户端通信。显然你应该用这个

我正在使用套接字用Python编写一个简单的聊天程序。到目前为止,我的代码如下(我是para编码,真正的东西太长了)

服务器类和导入:

import socket
import os
import socket
from subprocess import Popen, PIPE
import threading

class Server:
    def __init__(self,name,port=5001):
        self.name = name
        self.port = port
        self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.server_socket.bind(('',self.port))
        self.server_listen()

    def server_listen(self):
        self.server_socket.listen(5)
        while 1:
            self.client, self.address = self.server_socket.accept()
            self.discourse()

    def discourse(self):
        DisplayMessages(self.server_socket).start() #This is defined below
        while 1:
            #This sends messages to the client, also listening with DisplayMessages
            user_input = str(input(self.name + ' > '))
            send_bufr = '!dmsg :' + self.name + ' ' + user_input + '\r\n'
            self.client.send(bytearray(send_bufr, 'utf-8'))
我将省略Client类,因为它是相同的东西,只是它连接到:

    self.client_socket.connect((self.host,self.port))
而不是像服务器那样接受连接。它使用相同的方法将输入发送到服务器中的self.discussion。下面是DisplayMessage类。它作为自己的线程启动,并且是发生错误的地方(仅在服务器上,而不是客户端)

错误发生在这一行:

recv_bufr = (recv_bufr + 
             self.socket.recv(1024).decode('utf-8'))

但仅当服务器类使用DisplayMessage类时。我为这个问题的长度道歉。我想发布太多的代码,而不是太少。谢谢

你有没有试着用Wireshark捕捉你的传输,并检查谁关闭了连接。所以。。。编辑是回答还是澄清?
recv_bufr = (recv_bufr + 
             self.socket.recv(1024).decode('utf-8'))