Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Visual-Basic-Forum VB-Paradise.de. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

SONiQ

Registrierter Benutzer

Beiträge: 131

Dabei seit: 8. Januar 2010

  • Private Nachricht senden

21

Dienstag, 3. August 2010, 22:04

Ah ok, werde es mal testen...

SONiQ

Registrierter Benutzer

Beiträge: 131

Dabei seit: 8. Januar 2010

  • Private Nachricht senden

22

Dienstag, 3. August 2010, 23:26

Ne sry, das klappt nicht :(

jvbsl

Noob

  • »jvbsl« ist männlich

Beiträge: 7 444

Dabei seit: 7. April 2010

Hilfreich-Bewertungen: 494

  • Private Nachricht senden

23

Dienstag, 3. August 2010, 23:40

tolle Fehlerbeschreibung...

Zitat


stream = client.GetStream
streamr = New StreamReader(stream)
streamw = New StreamWriter(stream) ' Müsste eigentlich alles Klar sein.


While True

Select Case streamr.ReadLine

Case "onl" ' und so weiter eigentlich müsste es heißen select case mid(streamr.readline,1,3) Aber da des ja vielen zu Kompiziert ist lass ich das mal weg^^
streamw.WriteLine("ok") ' Achtung! ist nicht Vollständig!

das ist der Server, über streamr.... werden die Daten empfangen und über streamw... gesendet...wo ist das Problem?

Zitat


Sub client_send(ByVal text As String)
streamw.WriteLine(text)
streamw.Flush()
End Sub



Function client_recieve() As String
client_recieve = streamr.ReadLine
End Function

der Client kann ebenfalls Senden und Empfangen...
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---

SONiQ

Registrierter Benutzer

Beiträge: 131

Dabei seit: 8. Januar 2010

  • Private Nachricht senden

24

Mittwoch, 4. August 2010, 12:36

Könntest du mir bitte das genauer erklären?
Ich möchte nur ein Programm benutzen.
2 Leute haben das Programm geöffnet.
Einer verbindet sich mit der IP des anderen & dann können beide Befehle senden sowie auch empfangen.

jvbsl

Noob

  • »jvbsl« ist männlich

Beiträge: 7 444

Dabei seit: 7. April 2010

Hilfreich-Bewertungen: 494

  • Private Nachricht senden

25

Mittwoch, 4. August 2010, 13:03

genau das kann man hier auch machen, du musst nur noch beim Server Programm machen, dass die Benutzereingaben gesendet werden und das ganze nicht wie hier Automatisch abläuft...
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---

SONiQ

Registrierter Benutzer

Beiträge: 131

Dabei seit: 8. Januar 2010

  • Private Nachricht senden

26

Mittwoch, 4. August 2010, 13:26

Naja ich hab's jetzt anders hinbekommen...
Das Programm hat 2 Formen:
Senden & Empfangen.
Jede Form macht halt eine Aufgabe und jeder muss sich mit der IP des anderen verbinden...
Aber es klappt ;)

gerry80

Registrierter Benutzer

Beiträge: 5

Dabei seit: 23. September 2010

  • Private Nachricht senden

27

Freitag, 24. September 2010, 15:22

3 Fehler in TpcClient

Hallo,
im TpcClient bekomm ich 3 Fehler:

Zitat

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Button1 wird geclickt
Client.Connect(IP, Port) 'Client verbindet sich mit IP: 192.168.111.17 und Port 4000
If Client.Connected Then
stream = Client.GetStream ' Stream wird auf Client verwiesen
streamw = New StreamWriter(stream) ' Stream zum Senden wird deklariert
streamr = New StreamReader(stream) ' Stream zum Empfangen wird deklariert
login() ' Sub Login
Else
MsgBox("Verbidnung konnte nicht mit " & IP & " aufgebaut werden!")
End If
1. Client.Connect(IP, Port):
Eigenschaftenzugriff muss der Eigenschaft zugewiesen werden oder deren Wert verwenden.
2. Client.Connected:
"Connected" ist kein Member von "WindowsApplication1.TcpClient".
3. Client.GetStream:
"GetStream" ist kein Member von "WindowsApplication1.TcpClient".

kann mir jemand helfen

mfg gerry

Nibel

adorable

Beiträge: 210

Dabei seit: 7. April 2010

Hilfreich-Bewertungen: 19

  • Private Nachricht senden

28

Freitag, 24. September 2010, 20:14

Sicher das du
Dim client As New System.Net.Sockets.TcpClient
genommen hast?

domipoppe

Haters gonna hate.

  • »domipoppe« ist männlich

Beiträge: 417

Dabei seit: 1. August 2010

Hilfreich-Bewertungen: 29

  • Private Nachricht senden

29

Freitag, 24. September 2010, 22:18

hast du aber schon:

Dim stream As NetworkStream
Dim streamw As StreamWriter
Dim streamr As StreamReader
Dim Client As New TcpClient


dekaliert d.h über public class form1 eingefügt oder?
Meine Seite: www.e-software.lima-city.de
Mein Blog: Dominic Poppe's Entwicklerblog

[/b][/align]

gerry80

Registrierter Benutzer

Beiträge: 5

Dabei seit: 23. September 2010

  • Private Nachricht senden

30

Samstag, 25. September 2010, 18:27

ja hab ich alles gemacht hie mein ganzer code:

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Imports System.IO
Imports System.Net
Imports System.Net.Sockets


Public Class TcpClient

	Dim stream As NetworkStream
	Dim streamw As StreamWriter
	Dim streamr As StreamReader
	Dim client As New TcpClient
	Dim port As Integer = 5674

	Private Sub Connect_Click() Handles Connect.Click
    	Try

        	client.Connect(TextBox1.Text, port)


        	If client.Connected Then

            	stream = client.GetStream
            	streamw = New StreamWriter(stream)
            	streamr = New StreamReader(stream)

            	Label2.Visible = True
            	TextBox2.Visible = True
            	send.Visible = True

        	Else
        	End If
    	Catch ex As SocketException
        	MsgBox("Verbidnung konnte nicht mit " & ip & " aufgebaut werden!")
    	End Try

	End Sub

	Sub client_send(ByVal text As String)
    	streamw.WriteLine(text)
    	streamw.Flush()
	End Sub

	Function client_recieve() As String
    	client_recieve = streamr.ReadLine
	End Function

	Private Sub send_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles send.Click
    	client_send(TextBox2.Text)
	End Sub
End Class

Nibel

adorable

Beiträge: 210

Dabei seit: 7. April 2010

Hilfreich-Bewertungen: 19

  • Private Nachricht senden

31

Samstag, 25. September 2010, 22:36

Wenn ich bei deinem Code nur eine Zeile abändere klappt es wunderbar:

Visual Basic Quellcode

1
2
Dim client As New TcpClient ' Das hier wird zu: '
Dim client As New System.Net.Sockets.TcpClient

Crash129

VB Anfänger

Beiträge: 65

  • Private Nachricht senden

32

Freitag, 8. Juli 2011, 13:00

Kann der Server auch jedem Client eine ID zuweisen und dann eine Nachricht an diese schicken?

pc-freack

PC Freack

  • »pc-freack« ist männlich

Beiträge: 563

Dabei seit: 23. August 2010

Wohnort: Rotenburg Wümme

Hilfreich-Bewertungen: 28

  • Private Nachricht senden

33

Dienstag, 23. August 2011, 16:48

Ich habe das Problem, das der Client nichts Empfängt. Wenn ich darau warte, dann stürzt die Anwendung ab, weil er nichts empfängt. Doch der Server Empfängt und Verschickt etwas.
Das Senden beim Clients funktioniert auch. Eigentlich wollte ich das so machen, das beim Client Automatisch nach einer neuen Nachricht überprüft wird aber das habe ich auch nicht hinbekommen.
:thumbsup: MfG pc-freack :thumbsup:
Hat es geholfen? Dann bitte auf "Hilfreich" klicken

Aktuelles Projekt: Savegame Synchroniser

VB-Robo

Registrierter Benutzer

Beiträge: 39

Dabei seit: 3. Dezember 2010

  • Private Nachricht senden

34

Samstag, 27. August 2011, 10:03

also ich hab das jetzt auch mal ausprobiert und bei mir funktioniert es nicht so wirklich. Der Server scheint zu funktionierten. Zumindestens kommt da keine Fehlermeldung. Aber beim Clienten kommt immer wieder die Meldung dass er nicht mitm Server verbinden kann.
Ich habe zwei PCs direkt per Kabel verbunden also keine Firewall, kein Router rein gar nix dazwischen. Aber selbst wenn ich Server und Client aufm gleichen Rechner starte und dann mit der IP 127.0.0.1 Verbinden will, funktioniert es nicht.
Standartport ist bei mir 5000 und IP 192.168.0.55

hier mal meinen Code:

Client:

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Imports System.Net.Sockets
Imports System.IO

Public Class Form1
'Variablen:
Dim stream As NetworkStream
Dim streamw As StreamWriter
Dim streamr As StreamReader
Dim Client As New TcpClient
Dim IP As String
Dim Port As Integer

'_________________

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdVerbinden.Click

    Client.Connect(IP, Port)  'Client verbindet sich   'Hier tritt dann die Fehlermeldung auf

    If Client.Connected Then

        stream = Client.GetStream ' Stream wird auf Client verwiesen
        streamw = New StreamWriter(stream) ' Stream zum Senden wird deklariert
        streamr = New StreamReader(stream) ' Stream zum Empfangen wird deklariert

        cmdVerbinden.Enabled = False
        cmdSenden.Enabled = True
    Else
        MsgBox("Verbidnung konnte nicht mit " & IP & " aufgebaut werden!")
    End If
End Sub

Sub client_send(ByVal text As String)
    streamw.WriteLine(text)
    streamw.Flush()
End Sub

Function client_recieve() As String
    client_recieve = streamr.ReadLine
End Function

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    IP = txtIP.Text
    Port = CInt(txtPort.Text)
End Sub

Private Sub cmdSpeichern_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSpeichern.Click
    IP = txtIP.Text
    Port = CInt(txtPort.Text)

End Sub

'Client Starten wenn Button geklickt wurde
Private Sub cmdSenden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSenden.Click
    client_send(txtVersand.Text)
    txtEmpfang.Text = txtEmpfang.Text & vbCrLf & "Versenden: " & txtVersand.Text
    txtVersand.Text = ""

    txtEmpfang.Text = txtEmpfang.Text & vbCrLf & "Empfangen: " & client_recieve()

End Sub

Private Sub cmdBeenden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBeenden.Click
    Client.Close()
    Me.Close()

End Sub

End Class


Server:

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Imports System.Net

Public Class Form1

	'Variablen:
	Dim stream As NetworkStream
	Dim streamw As StreamWriter
	Dim streamr As StreamReader
	Dim Server As TcpListener
	Dim client As New TcpClient
	Dim Port As Integer
	Dim ipendpoint As IPEndPoint = New IPEndPoint(IPAddress.Any, Port)

	Dim mainthread As Threading.Thread
	'______________

	Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    	Port = CInt(txtPort.Text)
	End Sub

	Sub mainserver()
    	Try
        	Server = New TcpListener(ipendpoint)
        	Server.Start()
        	client = Server.AcceptTcpClient

        	stream = client.GetStream
        	streamr = New StreamReader(stream)
        	streamw = New StreamWriter(stream)  ' Müsste eigentlich alles Klar sein.
  	
    	Catch
        	txtEmpfang.Text = txtEmpfang.Text & vbCrLf & "Fehler: " & "Server konnte nicht gestartet werden" & vbCrLf   ' Hier wieder eine Fehler behandlung und ein neuen Versuch den Server zu starten...
    	End Try

    	'Empfangen:
    	txtEmpfang.Text = txtEmpfang.Text & vbCrLf & "Empfangen: " & streamr.ReadLine
	End Sub

	Private Sub Form1__close(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.FormClosing
    	Server.Stop()
    	Try
        	mainthread.Abort()
    	Catch
    	End Try
	End Sub

	Private Sub cmdSpeichern_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSpeichern.Click
    	Port = CInt(txtPort.Text)
	End Sub

'Text Senden wenn Button geklickt wurde
	Private Sub cmdVersand_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdVersand.Click
    	streamw.WriteLine(txtVersand.Text)
    	txtEmpfang.Text = txtEmpfang.Text & vbCrLf & "Versenden: " & txtVersand.Text
    	txtVersand.Text = ""
	End Sub

	Private Sub cmdBeenden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBeenden.Click
    	Me.Close()

	End Sub

'Server Starten wenn Button geklickt wurde
	Private Sub cmdStarten_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStarten.Click
    	txtEmpfang.Text = txtEmpfang.Text & vbCrLf & "Fehler: " & "Serverasdads " & vbCrLf

    	mainthread = New Threading.Thread(AddressOf mainserver)
    	mainthread.Start()

    	cmdStarten.Enabled = False
    	cmdVersand.Enabled = True
	End Sub
End Class

Padarom

VB and Portal 2 Owner

  • »Padarom« ist männlich

Beiträge: 30

Dabei seit: 7. Februar 2011

  • Private Nachricht senden

35

Montag, 19. September 2011, 17:39

Hallo,
ich arbeite aktuell an einer Verbindung zwischen ASP.net-Seite und Programm. Die Seite dient dabei als Client, das Programm als Server (IP ist auf HP eintragbar) - Wenn man auf der Homepage einen Text eingibt und auf absenden klickt, kommt beim Programm der Text auch richtig an, allerdings nur einmal (egal ob die HP von einer Person oder mehreren aufgerufen wird, IP wechselt also nicht). Beim zweiten oder dritten Mal kommt der Text nicht mehr bis zum Programm, das muss dann neugestartet werden.
Das wäre wohl ein Fall für den Multiserver, allerdings ist das Tutorial davon offline und deshalb nichtmehr auffindbar.
Was gibt es denn für großartige Änderungen zwischen diesem und einem Multiserver?

Mit freundlichen Grüßen
Padarom

cookyman

Registrierter Benutzer

Beiträge: 5

Dabei seit: 15. Oktober 2011

  • Private Nachricht senden

36

Samstag, 15. Oktober 2011, 21:05

Hallo Community,

ich bin auf dieses thema gestoßen und habe jetzt auch schon google bemüht nach einen Multiserver
wie diesem hier, aber leider habe ich dort auch nichts passendes gefunden.

Könnte mir bitte einer erklären wie ich das beispiel zu einen Multiserver umprogrammiere bzw.
mir einen Code zeigen dafür.

Ich möchte diesen Code dazu nutzen um einen Login Server für ein Programm zu nutzen.

Ich hoffe ich werde hier geholfen,
da ich schon auch auf 2 weitere Webseiten nachgefragt hatte,
aber da bekommt man als Neuling leider nur dumme antworten bzw. erst keine antwort.

SAR-71

Programmierer aus Leidenschaft

  • »SAR-71« ist männlich

Beiträge: 623

Dabei seit: 11. März 2009

Wohnort: Hamburg

Hilfreich-Bewertungen: 99

  • Private Nachricht senden

37

Dienstag, 31. Januar 2012, 21:10

Moin,

ist es auch möglich beim Server alle aktive Verbindungen zu listen? Oder ist es auch möglich empfange Datenpakete IP-Adressen zuzuordnen?



Mfg.
SAR

jvbsl

Noob

  • »jvbsl« ist männlich

Beiträge: 7 444

Dabei seit: 7. April 2010

Hilfreich-Bewertungen: 494

  • Private Nachricht senden

38

Mittwoch, 1. Februar 2012, 17:15

du bekommst per AcceptTCPClientjeweils einen Clienten, also füge diesen einer Liste hinzu...
Zum empfangen werden eh die Streams der jeweiligen TCPClienten aus dieser Liste verwendet, also sind diese sozusagen bereits zugeordnet...
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---

T1g0r

Registrierter Benutzer

Beiträge: 1 229

Dabei seit: 31. Januar 2007

Hilfreich-Bewertungen: 13

  • Private Nachricht senden

39

Dienstag, 13. März 2012, 12:17

Hi, ich hab da mal ne Frage zu dem Client.

Ich hab mir einen TCP-Server in C gebastelt. Dieser läuft auch gut.
Als Client nutze ich dieses Beispiel. Ich kann auch verbinden und Nachrichten senden. Nur wenn ich mit den Client Disconnecte und wieder Connecten will, bekomme ich die Fehlermeldung:

Quellcode

1
Auf das verworfene Objekt kann nicht zugegriffen werden. Objektname: "System.Net.Sockets.TcpClient".


Ist das .Close der Verbindung wirklich die richtige Methode diese zu beenden? Denn die Beschreibung lautet: "Verwirft diese System.Net.Socket.TcpClient-Instanz, ohne die zugrunde liegene Verbindung zu schließen."

Erst wenn ich die Anwendung neustarte, geht der Connect wieder...

Edit:
Habe auch grade noch bemerkt, das sobald ich die Daten auslesen will, sich das Programm aufhängt...
Es läuft erst wieder, wenn ich den Server stoppe. Aber Daten kommen keine an, obwohl ich welche mit printf() ausgebe.

Für Hilfe wäre ich sehr dankbar.
www.wintoolz.de
  • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
  • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
  • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

Benutze auch du Ecosia

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »T1g0r« (14. März 2012, 13:51)


Social Bookmarks