vb.net server

Status
Niet open voor verdere reacties.

sunion

Gebruiker
Lid geworden
24 aug 2008
Berichten
278
Ik heb een simpele server gemaakt die wacht op een connectie vanaf de client.

Normaal als de client 'hello' stuurt moet de server een password vragen.
anders moet hij een bericht sturen met 'Who are you?' en wachten op een bericht waarin 'hello' staat.

maar het werkt niet zo goed, zelfs als ik hello stuur, stuurt hij 'Who are you?' trug.
Weet iemand hoe ik het kan laten werken?

En is system.net.sockets een goede manier om een simpel chat programma te maken?


Code:
Imports System.Net.Sockets
Imports System.Text

Class TCPSrv
	Shared Sub Main()
		'----------------START LISTENING----------------------------------
		Const portNumber As Integer = 8000
		Dim tcpListener As New TcpListener(portNumber)
		tcpListener.Start()
		Console.WriteLine("<NO CONNECTION>")
		'---------------ACCEPT CONNECTION-------------------------------
1:
		Dim tcpClient As TcpClient = tcpListener.AcceptTcpClient()
		Console.Clear()
		Console.WriteLine("<CONNECTION ESTABLISHED>")
		Dim networkStream As NetworkStream = tcpClient.GetStream()
		Dim bytes(tcpClient.ReceiveBufferSize) As Byte
		networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
		Dim clientdata As String = Encoding.ASCII.GetString(bytes)
		If clientdata = "hello" Then
			Console.WriteLine(("Client sent: " + clientdata))
			Dim responseString As String = "Welcome"
			Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(responseString)
			networkStream.Write(sendBytes, 0, sendBytes.Length)
			pass()
		Else
			Dim responseString As String = "Who are you?"
			Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(responseString)
			networkStream.Write(sendBytes, 0, sendBytes.Length)
			GoTo 1
		End If
	End Sub
	'----------------------AUTHENTICATION------------------------
	Shared Sub pass()
		Try
			Dim tcpClient As New System.Net.Sockets.TcpClient()

			Dim networkStream As NetworkStream = tcpClient.GetStream()
			If networkStream.CanWrite And networkStream.CanRead Then

				Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes("Please enter a password: ")
				networkStream.Write(sendBytes, 0, sendBytes.Length)
				Dim bytes(tcpClient.ReceiveBufferSize) As Byte
				networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
				' Output the data received from the client to the console.
				Dim returndata As String = Encoding.ASCII.GetString(bytes)
				Console.WriteLine(("Host returned: " + returndata))
			End If
		Catch ex As Exception
			MsgBox("FAILED TO SEND REQUEST")
		End Try

		Console.ReadLine()

	End Sub
End Class

Hopelijk kan iemand me helpen...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan