Imports System.Net
Imports System.Net.Sockets
Imports System.IO
Imports System.Text
Imports System.Threading
Public Class frmTalk
Dim RemoteIP As String = "127.0.0.1"
Dim Connected As Boolean = False
Dim Client As TcpClient
Dim Listener As TcpListener
Dim t As Thread
Dim objStreamWriter As StreamWriter
Private Delegate Sub Invoker(ByVal str As String)
Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
Me.Close()
End Sub
Private Sub DoListen()
Dim strTemp As String = ""
Listener = New TcpListener(IPAddress.Parse("127.0.0.1"), 65535)
Listener.Start()
Do
If Listener.Pending = True Then Listener.AcceptSocket()
Dim objClient As TcpClient = Listener.AcceptTcpClient
Dim objStreamReader As New StreamReader(objClient.GetStream)
While objStreamReader.Peek <> -1
strTemp &= Convert.ToChar(objStreamReader.Read).ToString
End While
Dim params() As Object = {strTemp}
Me.Invoke(New Invoker(AddressOf WriteText), params)
Loop
End Sub
Private Sub frmTalk_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
Connected = False
prgRecieved.Value = 0
btnSendFile.Enabled = False
Try
t.Abort()
Catch tae As Exception
'Ignore error to prevent thread looping
End Try
End Sub
Private Sub ConnectToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ConnectToolStripMenuItem.Click
RemoteIP = InputBox("Please enter the IP address to connect to", , RemoteIP)
If My.Computer.Network.Ping(RemoteIP) Then
t = New Thread(AddressOf DoListen)
t.Start()
Try
Client = New TcpClient(RemoteIP, 65535)
Catch ex As Exception
MessageBox.Show(ex.Message)
Clipboard.SetText(ex.Message)
Exit Sub
End Try
DisconnectToolStripMenuItem.Enabled = True
ConnectToolStripMenuItem.Enabled = False
txtMessage.Enabled = True
txtRecieved.Enabled = True
btnSend.Enabled = True
prgRecieved.Enabled = True
prgRecieved.Value = 0
btnSendFile.Enabled = True
Connected = True
MessageBox.Show("You have successfully connected to " & RemoteIP.ToString)
Else
MessageBox.Show("The IP address you entered is invalid or is being blocked by a firewall")
End If
End Sub
Private Sub DisconnectToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DisconnectToolStripMenuItem.Click
Client.Close()
ConnectToolStripMenuItem.Enabled = True
DisconnectToolStripMenuItem.Enabled = False
Connected = False
tmrRecieve.Enabled = False
txtMessage.Enabled = False
txtRecieved.Enabled = False
btnSend.Enabled = False
prgRecieved.Enabled = False
btnSendFile.Enabled = False
prgRecieved.Value = 0
End Sub
Private Sub btnSendFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSendFile.Click
Dim ofd As New OpenFileDialog
ofd.Filter = "All files|*.*"
ofd.Multiselect = False
ofd.CheckFileExists = True
If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
'Code to send file
End If
End Sub
Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
objStreamWriter = New StreamWriter(Client.GetStream)
objStreamWriter.Write(txtMessage.Text)
objStreamWriter.Flush()
objStreamWriter.Close()
End Sub
Private Sub WriteText(ByVal str As String)
txtRecieved.Text &= RemoteIP & " says: " & vbCrLf & str & vbCrLf & vbCrLf
End Sub
End Class