Hallo,
Ich versuche derzeit ein Programm zu erstellen das aus einem Server und Client besteht.
Wenn ich zb über den Client den Befehl "ListDrives" and den Server schicke dann soll er dort ein Befehl ausführen und mir das Resultat im Client anzeigen,
jedoch krieg ich das ganze nur Angezeigt wenn ich das in Form einer Msgbox mache, hab den TCP/IP Code von nem Tutorial genommen und angepasst aber so ganz blick ich dort nich ganz durch.
Wäre echt korrekt wenn mir da wer helfen kann.
Hier sind beide Codes:
Server:
Client:
Ich versuche derzeit ein Programm zu erstellen das aus einem Server und Client besteht.
Wenn ich zb über den Client den Befehl "ListDrives" and den Server schicke dann soll er dort ein Befehl ausführen und mir das Resultat im Client anzeigen,
jedoch krieg ich das ganze nur Angezeigt wenn ich das in Form einer Msgbox mache, hab den TCP/IP Code von nem Tutorial genommen und angepasst aber so ganz blick ich dort nich ganz durch.
Wäre echt korrekt wenn mir da wer helfen kann.
Hier sind beide Codes:
Server:
VB.NET-Quellcode
- Imports System
- Imports System.IO
- Imports System.Net
- Imports System.Net.Sockets
- Public Class RMserver
- Dim stream As NetworkStream
- Dim streamw As StreamWriter
- Dim streamr As StreamReader
- Dim server As TcpListener
- Dim client As New TcpClient
- Dim ipendpoint As IPEndPoint = New IPEndPoint(IPAddress.Any, 8000)
- Dim t As New Threading.Thread(AddressOf Main)
- Sub Send(ByVal stext As String)
- streamw.WriteLine(stext)
- streamw.Flush()
- End Sub
- Sub Main()
- Try
- server = New TcpListener(ipendpoint)
- server.Start()
- client = server.AcceptTcpClient
- stream = client.GetStream
- streamr = New StreamReader(stream)
- streamw = New StreamWriter(stream)
- While True
- Select Case streamr.ReadLine
- 'Command execution
- Case "ListDrives"
- 'Execute ListDrives
- GetDrives()
- End Select
- End While
- Catch ex As Exception
- MessageBox.Show(ex.ToString)
- End Try
- End Sub
- Private Sub RMserver_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- Try
- t.Start()
- Catch ex As Exception
- client.Close()
- streamr.Close()
- streamw.Close()
- stream.Close()
- MessageBox.Show(ex.ToString)
- End Try
- End Sub
- Public Sub GetDrives()
- Try
- Dim output As String
- Dim drives As String() = System.IO.Directory.GetLogicalDrives()
- For Each drive In drives
- output = drive
- Send(output)
- Next
- Catch ex As Exception
- MessageBox.Show(ex.ToString)
- End Try
- End Sub
- End Class
Client:
VB.NET-Quellcode
- Imports System
- Imports System.IO
- Imports System.Net
- Imports System.Net.Sockets
- Public Class RHclient
- Dim stream As NetworkStream
- Dim streamw As StreamWriter
- Dim streamr As StreamReader
- Dim client As New TcpClient
- Dim t As New Threading.Thread(AddressOf Listen)
- Public Const WM_NCLBUTTONDOWN As Integer = &HA1
- Public Const HTCAPTION As Integer = &H2
- <Runtime.InteropServices.DllImport("User32.dll")> _
- Public Shared Function ReleaseCapture() As Boolean
- End Function
- <Runtime.InteropServices.DllImport("User32.dll")> _
- Public Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
- End Function
- Sub Listen()
- While client.Connected
- Dim befehl As String = Receive()
- If befehl <> "" Then
- 'Recieves command output here
- MsgBox(befehl)
- End If
- End While
- End Sub
- Sub Send(ByVal stext As String)
- streamw.WriteLine(stext)
- streamw.Flush()
- End Sub
- Function Receive() As String
- Try
- Return streamr.ReadLine
- Catch
- Return ""
- End Try
- End Function
- Private Sub RHclient_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
- If e.Button = MouseButtons.Left Then
- ReleaseCapture()
- SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0)
- End If
- End Sub
- Private Sub MinimizeButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MinimizeButton.Click
- Me.WindowState = FormWindowState.Minimized
- End Sub
- Private Sub CloseButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CloseButton.Click
- Me.Close()
- End Sub
- Private Sub RHclient_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- DisconnectButton.Enabled = False
- ConnectButton.Enabled = True
- End Sub
- Private Sub ConnectButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ConnectButton.Click
- Try
- If IPTextBox.Text = Nothing Then
- DisconnectButton.Enabled = False
- StatusListBox.Items.Add("Please enter IP Adress!...")
- Else
- If PortTextBox.Text = Nothing Then
- DisconnectButton.Enabled = False
- StatusListBox.Items.Add("Please enter Port!...")
- Else
- StatusListBox.Items.Add("Trying to connect to " + IPTextBox.Text + ":" + PortTextBox.Text + "...")
- client.Connect(IPTextBox.Text, PortTextBox.Text)
- If client.Connected Then
- 'Connecting to Server
- stream = client.GetStream
- streamw = New StreamWriter(stream)
- streamr = New StreamReader(stream)
- t.Start()
- StatusListBox.Items.Add("Connected to " + IPTextBox.Text + ":" + PortTextBox.Text + "...")
- ConnectButton.Enabled = False
- DisconnectButton.Enabled = True
- Else
- StatusListBox.Items.Add("Cant connect to " + IPTextBox.Text + ":" + PortTextBox.Text + "...")
- ConnectButton.Enabled = True
- DisconnectButton.Enabled = False
- End If
- End If
- End If
- Me.StatusListBox.SelectedIndex = Me.StatusListBox.SelectedIndex + 1
- Catch ex As Exception
- StatusListBox.Items.Add("Cant connect to " + IPTextBox.Text + ":" + PortTextBox.Text + "...")
- ConnectButton.Enabled = True
- DisconnectButton.Enabled = False
- End Try
- End Sub
- Private Sub DisconnectButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DisconnectButton.Click
- Try
- If client.Connected Then
- 'Disconnecting from Server
- StatusListBox.Items.Add("Disconnecting from " + IPTextBox.Text + ":" + PortTextBox.Text + "...")
- client.Close()
- stream.Close()
- streamw.Close()
- streamr.Close()
- ConnectButton.Enabled = True
- DisconnectButton.Enabled = False
- End If
- Me.StatusListBox.SelectedIndex = Me.StatusListBox.SelectedIndex + 1
- Catch ex As Exception
- StatusListBox.Items.Add("Currently no Connection to a Network...")
- End Try
- End Sub
- Private Sub FileExplorerButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FileExplorerButton.Click
- FileExplorer.Show()
- End Sub
- End Class
VB.NET-Quellcode
- Imports System
- Imports System.IO
- Imports System.Net
- Public Class FileExplorer
- Private Sub ListDrivesButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListDrivesButton.Click
- Try
- RHclient.Send("ListDrives")
- Catch ex As Exception
- MessageBox.Show(ex.ToString)
- End Try
- End Sub
- End Class