Good afternoon.

I've got some socket code that I appear to be having some problems
with. I've taken a few approaches at it and come up short more than
once... Here is what LOOKS like it ought to be the solution;


        public void Start()
        {
            this.SetRunning(true);

            while (this.IsRunning())
            {
                if (!this.Client.CheckConnection())
                {
                    return;
                }
                else
                {
                    String Line = null;
                    while ((Line =
this.Client.ClientReader.ReadLine()) != null)
                    {
                        // Do some kind of input handling.
                    }
                    continue;
                }
            }
        }

Here is how my stream/reader/writer are built:

                        this.ClientSocket = ClientSocket;
                        this.ClientStream = new
NetworkStream(this.ClientSocket);
                        this.ClientReader = new
StreamReader(this.ClientStream);
                        this.ClientWriter = new
StreamWriter(this.ClientStream);

Here is what I am experiencing:

Over every iteration of the loop inside of this threads main function,
the program hangs at ClientReader.ReadLine - this makes perfect sense
to me. Waiting for a line to be fed. Fair.
What DOESN'T make sense is that after I send a line ( currently using
putty on both a raw and telnet connection ) it catches that I sent a
line, but does not read the text that was actually sent - An example:
    Start the server
    Allow initiation
    Connect client
    Send 'request\n\r' To Client
    Recieve 'request\n\r' from server
    Send 'test\n\r' to server
    Recieve '\n\r' from client

Here is where I initialize my server socket that accepts all of our
connections:

        public Boolean StartServer()
        {
            if ( this.ListenerInstance != null &&
this.ListenerInstance.IsRunning())
            {
                return true;
            }
            else
            {
                this.ListenerInstance = new SocketListener(this);
                this.ListenerThread = new
Thread(ListenerInstance.Start);
                this.ListenerThread.Start();

                while (ListenerInstance.IsRunning() && !
ListenerInstance.IsBound())
                {
                    this.Status = "Waiting to bind host socket...";
                }
                return true;
            }
        }


And accepting new clients:
( this happens in the listener thread... )

        public void AcceptConnections()
        {
            if (this.HostListener == null)
            {
                return;
            }
            else
            {
                // Just changed this to AcceptTcpClient from
AcceptSocket - no difference.
                Socket NewConnection =
this.HostListener.AcceptTcpClient( ).Client;
                ClientData AcceptingClient = null;

                if ((AcceptingClient =
this.Server.GetClientData(NewConnection.RemoteEndPoint.ToString().Split(':')
[0])) == null)
                {
                    this.Server.AdditionalStatus += "\n\rCould not
accept connection from " +
NewConnection.RemoteEndPoint.ToString().Split(':')[0] + " : Not listed
as an available client.";
                }
                else
                {
                    this.Server.AdditionalStatus += "\n\rNew
connection accepted from " +
NewConnection.RemoteEndPoint.ToString().Split(':')[0] + ".";
                    AcceptingClient.Accept(NewConnection);
                    return;
                }
            }
            return;
        }

If anyone can help that'd be great, and much appreciated.

Reply via email to