I know a similar question has been asked here, but I am still battling with the following issue:
I am using putty as a telnet client and am using Win10. The code is given below. When I start the reactor and then connect a client, I get a response after each character is typed which is printed using the dataReceived function. However I can never seem to get the function lineReceived() to fire. I also tried a simple chat server example which worked fine using the lineReceived() function (and that example had no dataReceived() function. I tried commenting out dataReceived(), thinking perhaps it was masking out lineReceived().
In the code below, I cannot get lineReceived() to fire , only dataReceived() fires after each character is typed.
#! C:/Python37/python.exe
from twisted.internet import reactor
from twisted.internet.protocol import Factory, Protocol
from datetime import datetime, tzinfo, timedelta
from twisted.protocols.basic import LineReceiver
class Echo(Protocol):
    def dataReceived(self, data):
        self.transport.write(data)
class LineReceiver(Protocol):
    print("Starting.......")
    delimiter = "\n"
    TIMEOUT = 300  # Client timeout period in seconds
    def timeOut(self):
        print("Client: %s. %s" % (self.addr, "Connection Timed out"))
        self.transport.loseConnection()
    def lineLengthExceeded(self, line):
        return self.transport.loseConnection()
    def connectionMade(self):
        print("Connected......")
        self.transport.write(b"hell...")
        self.timeout = reactor.callLater(
            self.TIMEOUT, self.timeOut
        )  # start client timeout timer
        self.addr = self.transport.getPeer().host
        addr = self.addr
        self.addr_test = self.transport.getPeer().host
        self.factory.NUM_CLIENTS += 1
    def connectionLost(self, reason):
        print("Lost.......")
        # self.sendMsg("- %s left." % self.name)
        self.transport.write(b"a client left")
        self.factory.NUM_CLIENTS -= 1
        print("Client disconnected: - " + str(self.addr))
        print("Number of connections = %s" % self.factory.NUM_CLIENTS)
    # def dataReceived(self, data): # this runs a few times after an initial connection
    # self.transport.write(b"you typed: " + data +b"\n" + b"\r")
    # print(data) # prints to log file with byte order marks
    def lineReceived(self, line):
        self.sendLine(b"Welcome, %s!" % (name,))
        self.transport.write(b"line rx function...")
class DataFactory(Factory):
    protocol = LineReceiver
    NUM_CLIENTS = 0
def main():
    print("Started...Listening for incoming connections.")
if __name__ == "__main__":
    main()
    reactor.listenTCP(10003, DataFactory())
    reactor.run()