Two application one on server and other on client (can be run both on same machine). Just run server first. After run write text and click on send, text will appear on client applcation as well.Chat applcaition / chat server in vb.net
SERVER code
Imports System.Net.Sockets
Imports System.Text
Public Class Form1
Const portNumber As Integer = 8000
Public tcpListener As New TcpListener(portNumber)
Public tcpClient As TcpClient
Public networkStream As NetworkStream
' Read the stream into a byte array
Public bytes(1000000) As Byte
Public clientdata As String
Public responseString As String ' = TextBox2.Text '"Connected to server."
Public sendBytes As [Byte]()
Public flag As Integer = 0
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If flag = 0 Then
tcpListener.Start()
tcpClient = tcpListener.AcceptTcpClient()
networkStream = tcpClient.GetStream()
Timer1.Enabled = True
flag = 1
End If
responseString = TextBox2.Text
sendBytes = Encoding.ASCII.GetBytes(responseString)
networkStream.Write(sendBytes, 0, sendBytes.Length)
TextBox1.Text = TextBox1.Text & vbCrLf & "SERVER:" & TextBox2.Text '& vbCrLf
TextBox2.Text = ""
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If networkStream.DataAvailable = True Then
networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
' Return the data received from the client to the console.
clientdata = Encoding.ASCII.GetString(bytes)
Array.Clear(bytes, 0, bytes.Length)
TextBox1.Text = TextBox1.Text & vbCrLf & "CLIENT: " & clientdata '& vbCrLf
'Console.WriteLine(("Client sent: " + clientdata))
'responseString = TextBox2.Text '"Connected to server."
'sendBytes = Encoding.ASCII.GetBytes(responseString)
'networkStream.Write(sendBytes, 0, sendBytes.Length)
' Timer1.Enabled = False
End If
' TextBox1.Text = TextBox1.Text & TextBox2.Text
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
tcpClient.Close()
tcpListener.Stop()
Me.Close()
End Sub
End Class
=========================================
Client Code (Change IP accordingly in [ tcpClient.Connect("127.0.0.1", 8000) ] line)
Imports System.Net.Sockets
Imports System.Text
Public Class Form1
Public flag As Integer = 0
Public tcpClient As New System.Net.Sockets.TcpClient()
Public networkStream As NetworkStream '= tcpClient.GetStream()
Public bytes(100000) As Byte
Public returndata As String ' = Encoding.ASCII.GetString(bytes)
Public sendBytes As [Byte]()
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If flag = 0 Then
tcpClient.Connect("127.0.0.1", 8000)
networkStream = tcpClient.GetStream()
flag = 1
Timer1.Enabled = True
End If
' Do a simple write.
sendBytes = Encoding.ASCII.GetBytes(TextBox2.Text)
networkStream.Write(sendBytes, 0, sendBytes.Length)
'
TextBox1.Text = TextBox1.Text & vbCrLf & "CLIENT" & TextBox2.Text '& vbCrLf
TextBox2.Text = ""
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If networkStream.DataAvailable = True Then
networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
returndata = Encoding.ASCII.GetString(bytes)
Array.Clear(bytes, 0, bytes.Length)
TextBox1.Text = TextBox1.Text & vbCrLf & "SERVER: " & returndata '& vbCrLf
' Timer1.Enabled = False
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
tcpClient.Close()
Me.Close()
End Sub
End Class
=======================
2 textboxes are used. one with multiline property ON
and and button to send message
No comments:
Post a Comment