Hello, I am trying to create a "stock Price Program" for an assignment that will allow you to type in a stock symbol such as "goog" in the client side and the server side will respond with a price for that stock symbol, this price can either be hard coded in or read from a text file. I have done a lot of research and have a good understanding of how sockets work.

My issue is that I do not understand how to get the server to reply based on what the client sends it. I have a working program that allows you to send text to the server and it should reply with the same text and date but i think the client is just re-typing the text instead of receiving it from the server and I can't figure out how to get the client to receive back from the server

Here is my code for the client:

Imports System.IO

Imports System.Net.Sockets



Module Module1



    Sub Main()



        Try

            Console.WriteLine("Connecting to 8585 Local Host")

            Dim serverListener As New TcpClient("localhost", 8585)




            Console.WriteLine("Input Lines:")

            Dim str As String = Console.ReadLine()
            Dim Bytes(1024) As Byte
            Dim datas As String = Nothing



            While True

                Dim sendBuff As Byte() = System.Text.Encoding.ASCII.GetBytes(str)
                Dim readStream As NetworkStream = serverListener.GetStream



                readStream.Write(sendBuff, 0, sendBuff.Length)


                If str.StartsWith(".") Then

                    GoTo Done

                End If



                datas = Nothing

                Dim i As Int32

                ' Loop to receive all the data sent by the client.
                i = readStream.Read(Bytes, 0, Bytes.Length)
                While (i <> 0)
                    ' Translate data bytes to a ASCII string.
                    datas = System.Text.Encoding.ASCII.GetString(Bytes, 0, i)
                    Console.WriteLine("Received: {0}", datas)

                    ' Process the data sent by the client.
                    datas = datas.ToUpper()
                    Dim msg As Byte() = System.Text.Encoding.ASCII.GetBytes(datas)


                    str = Console.ReadLine()

                End While
            End While



Done:       Console.WriteLine("Done")



        Catch exp As Exception



            Console.WriteLine("Exception: " + exp.ToString())



        End Try





    End Sub



End Module

And the code for the server :

Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports Microsoft.VisualBasic


Class MyTcpListener

    Public Shared Sub Main()

        Dim server As TcpListener
        server = Nothing
        ' Set the TcpListener on port 8585.
        Try
            Dim port As Int32 = 8585
            Dim localAddr As IPAddress = IPAddress.Parse("127.0.0.1")

            server = New TcpListener(localAddr, port)

            ' Start listening for client requests.
            server.Start()

            ' Buffer for reading data
            Dim bytes(1024) As Byte
            Dim data As String = Nothing

            ' Enter the listening loop.
            While True
                Console.Write("Waiting for a connection... ")

                ' Perform a blocking call to accept requests.
                ' You could also user server.AcceptSocket() here.
                Dim client As TcpClient = server.AcceptTcpClient()
                Console.WriteLine("Connected!")

                data = Nothing

                ' Get a stream object for reading and writing
                Dim stream As NetworkStream = client.GetStream()

                Dim i As Int32


                ' Loop to receive all the data sent by the client.
                i = stream.Read(bytes, 0, bytes.Length)
                While (i <> 0)


                    ' Translate data bytes to a ASCII string.
                    data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
                    Console.WriteLine("Received: {0}", data)

                    ' Process the data sent by the client.
                    data = data.ToUpper()
                    Dim msg As Byte() = System.Text.Encoding.ASCII.GetBytes(data)

                    ' Send back a response.
                    stream.Write(msg, 0, msg.Length)
                    Console.WriteLine("Sent: {0}", data & Format(#5/31/1993#, "dddd, d MMM yyyy"))

                    i = stream.Read(bytes, 0, bytes.Length)

                End While

                ' Shutdown and end connection
                client.Close()
            End While
        Catch e As SocketException
            Console.WriteLine("SocketException: {0}", e)
        Finally
            server.Stop()

        End Try

        Console.WriteLine(ControlChars.Cr + "Hit enter to continue....")
        Console.Read()
    End Sub 'Main

End Class 'MyTcpListener

I need some direction, it's been quite awhile since i've done any coding so any help is appreciated! Also if you have any insight on creating different threads that would be helpful, we are supposed to have it allow only 5 connections on different threads.

Thanks, please ask if you need any more information.

Edited 5 Years Ago by JRADCL9092: n/a

This article has been dead for over six months. Start a new discussion instead.