Du bist nicht angemeldet.

[VB 2010] Tcp Frage

Shawak

Registrierter Benutzer

  • »Shawak« ist der Autor dieses Themas

Beiträge: 59

Dabei seit: 11. Januar 2010

Hilfreich-Bewertungen: 1

  • Private Nachricht senden

1

Montag, 6. September 2010, 15:14

Tcp Frage

Also habe folgendes Problem, wenn ich mit meinen Client connecte, udn disconnete, funktioniert allles, aber wenn ich dann wieder connecte disconnected er nicht, ich kann nichts mehr schreiben etc..

hier der 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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
Imports System.IO
Imports System.Net
Imports System.Net.Sockets

Public Class TCPServer

#Region "Tcp Deklaration"

	Dim Port As Integer = 9000

	Dim Server As TcpListener
	Dim Client As New TcpClient

	Dim serverThread As Threading.Thread
	Dim List As New List(Of Connection)

	Private Structure Connection
    	Dim nick As String
    	Dim pass As String
    	Dim stream As NetworkStream
    	Dim streamw As StreamWriter
    	Dim streamr As StreamReader
	End Structure

#End Region

#Region "Tcp Funktionen"

	Private Sub mainServer(ByVal port As Integer)
    	While True
        	Try
            	Client = Server.AcceptTcpClient

            	Dim conn As New Connection
            	conn.stream = Client.GetStream
            	conn.streamr = New StreamReader(conn.stream)
            	conn.streamw = New StreamWriter(conn.stream)

            	List.Add(conn)

            	Dim listen As New Threading.Thread(AddressOf ListenToConnection)
            	listen.Start(conn)
        	Catch ex As Exception
            	MsgBox(ex.Message)
        	End Try
    	End While

	End Sub

	Private Sub ListenToConnection(ByVal conn As Connection)
    	Do
        	Try
            	Dim tmp As String = conn.streamr.ReadLine
            	Select Case tmp
                	Case "add"
                    	Dim nick As String = conn.streamr.ReadLine
                    	conn.nick = nick
                    	ListBox1.Items.Add(nick)
                    	Dim str As String = conn.nick + " has joined."
                    	ListBox2.Items.Add(str)
                    	TCPSend("msg")
                    	TCPSend(str)
                	Case "msg"
                    	Dim str As String = conn.nick + ": " + conn.streamr.ReadLine
                    	ListBox2.Items.Add(str)
                    	TCPSend("msg")
                    	TCPSend(str)
                	Case "exit"
                    	Dim str As String = conn.nick + " has left."
                    	ListBox2.Items.Add(str)
                    	ListBox1.Items.Remove(conn.nick)
                    	List.Remove(conn)
                    	TCPSend("msg")
                    	TCPSend(str)
                    	Exit Do
            	End Select
        	Catch
            	Exit Do
        	End Try
    	Loop
	End Sub

	Public Sub TCPSend(ByVal text As String)
    	For Each conn In List
        	conn.streamw.WriteLine(text)
        	conn.streamw.Flush()
    	Next
	End Sub

	Private Sub CloseServer()
    	Try
        	serverThread.Abort()
        	For Each conn In List
            	conn.stream.Close()
            	conn.streamr.Close()
            	conn.streamw.Close()
        	Next
        	Client.Close()
        	Server.Stop()
    	Catch
    	End Try
	End Sub

#End Region

	Private Sub TCPServer_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    	Server = New TcpListener(New IPEndPoint(IPAddress.Any, Port))
    	Server.Start()

    	serverThread = New Threading.Thread(AddressOf mainServer)
    	serverThread.Start(Port)
	End Sub

	Private Sub TCPServer_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    	CloseServer()
	End Sub

End Class


und hier der 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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
Imports System.IO
Imports System.Net
Imports System.Net.Sockets

Public Class TCP_Client

#Region "Tcp Dekleration"
	Dim stream As NetworkStream
	Dim streamw As StreamWriter
	Dim streamr As StreamReader

	Dim Client As New TcpClient
	Dim listenThread As Threading.Thread

#End Region

#Region "Tcp Funktionen"

	Public Sub connectToServer(ByVal ip As String, ByVal port As Integer)
    	Client.Connect(ip, port)

    	If Client.Connected = True Then
        	stream = Client.GetStream
        	streamw = New StreamWriter(stream)
        	streamr = New StreamReader(stream)
    	Else
        	MsgBox("Error by connecting.")
        	Exit Sub
    	End If

    	Try
        	listenThread = New Threading.Thread(AddressOf mainClient)
        	listenThread.Start()
    	Catch ex As Exception
        	MsgBox(ex.Message)
    	End Try
	End Sub

	Private Sub mainClient()
    	While Client.Connected
        	Try
            	Select Case streamr.ReadLine
                	Case "msg"
                    	ListBox1.Items.Add(streamr.ReadLine)
            	End Select
        	Catch
            	Exit While
        	End Try
    	End While
	End Sub

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

	Public Sub closeClient()
    	Try
        	listenThread.Abort()
        	TCPSend("exit")
        	Client.Close()
    	Catch
    	End Try
	End Sub

#End Region

	Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    	Try
        	connectToServer("127.0.0.1", 9000)
        	TCPSend("add")
        	TCPSend(My.Computer.Name)
    	Catch ex As Exception
        	MsgBox("Could not connect to the host.")
        	Me.Close()
        	Exit Sub
    	End Try
	End Sub

	Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    	closeClient()
	End Sub

	Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
    	If e.KeyCode = Keys.Enter Then
        	If TextBox1.Text <> "" Then
            	TCPSend("msg")
            	TCPSend(TextBox1.Text)
            	TextBox1.Text = ""
        	End If
    	End If
	End Sub

End Class


Ich hab jz über 3 wochen gegoogelt und nichts gefunden, bitte helf mir ;D!

mfG,
Shawak

milaim

IT specialist

  • »milaim« ist männlich

Beiträge: 1 605

Dabei seit: 1. April 2008

Wohnort: Nürnberg

Hilfreich-Bewertungen: 40

  • Private Nachricht senden

2

Montag, 6. September 2010, 15:16

Schonmal debuggt?
$result = mysql_query("SELECT finger FROM hand WHERE position=3");
echo $result;

MB-Tech

.NET Developer

  • »MB-Tech« ist männlich

Beiträge: 1 134

Dabei seit: 18. Dezember 2009

Wohnort: Rüsselsheim

Hilfreich-Bewertungen: 74

  • Private Nachricht senden

3

Montag, 6. September 2010, 17:53

Schau mal das du deine Client Connection auch wieder aus der Liste herausschmeißt.
Weil das habe ich jetzt nicht gefunden, wo du das machst...
An Alle Neulinge oder Unwissende -> Bitte Lesen <-



Hat dir mein Beitrag geholfen? Dann drück doch einfach auf den Button ;)

Shawak

Registrierter Benutzer

  • »Shawak« ist der Autor dieses Themas

Beiträge: 59

Dabei seit: 11. Januar 2010

Hilfreich-Bewertungen: 1

  • Private Nachricht senden

4

Montag, 6. September 2010, 18:05

Hier mahc ich das;

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
                Case "exit"
                    Dim str As String = conn.nick + " has left."
                    ListBox2.Items.Add(str)
                    ListBox1.Items.Remove(conn.nick)
                    List.Remove(conn)
                    TCPSend("msg")
                    TCPSend(str)
                    Exit Do
            End Select

MB-Tech

.NET Developer

  • »MB-Tech« ist männlich

Beiträge: 1 134

Dabei seit: 18. Dezember 2009

Wohnort: Rüsselsheim

Hilfreich-Bewertungen: 74

  • Private Nachricht senden

5

Montag, 6. September 2010, 18:10

Ich würde das lieber Serverseitig behandeln und nicht einen Befehl schicken, der sagt, "Jo, ich bin dann mal weg" :rolleyes:
An Alle Neulinge oder Unwissende -> Bitte Lesen <-



Hat dir mein Beitrag geholfen? Dann drück doch einfach auf den Button ;)

Shawak

Registrierter Benutzer

  • »Shawak« ist der Autor dieses Themas

Beiträge: 59

Dabei seit: 11. Januar 2010

Hilfreich-Bewertungen: 1

  • Private Nachricht senden

6

Montag, 6. September 2010, 18:15

Hab ich versucht aber dies ging auch nicht.

MB-Tech

.NET Developer

  • »MB-Tech« ist männlich

Beiträge: 1 134

Dabei seit: 18. Dezember 2009

Wohnort: Rüsselsheim

Hilfreich-Bewertungen: 74

  • Private Nachricht senden

7

Montag, 6. September 2010, 18:20

Sowie ich das sehe ist das komplette Programm fast nur C&P von kevin89.
Wenn du schon kopierst, dann mach das auch richtig und nicht nur halb.
Weil du musst auch wenn Serverseitig der Client nichts mehr macht, diesen auch "rauskicken"

Das sehe ich nicht...
An Alle Neulinge oder Unwissende -> Bitte Lesen <-



Hat dir mein Beitrag geholfen? Dann drück doch einfach auf den Button ;)

Shawak

Registrierter Benutzer

  • »Shawak« ist der Autor dieses Themas

Beiträge: 59

Dabei seit: 11. Januar 2010

Hilfreich-Bewertungen: 1

  • Private Nachricht senden

8

Montag, 6. September 2010, 18:23

Ich hab echt alles versucht, conn.stream.close, alle clients gecloset etc, dann hab ich meins immer mehr mit andernen tuts verglichen udn wieder geändert aber es hat trotdem nicht funktioniert, also falls wer ein gutes TuT kennt, bitte melden, danke.. :D.

Ansonsten wär ich dankbar wenn mir jetzt einer sagen könnte wo der Fehler ist..

Shawak

Registrierter Benutzer

  • »Shawak« ist der Autor dieses Themas

Beiträge: 59

Dabei seit: 11. Januar 2010

Hilfreich-Bewertungen: 1

  • Private Nachricht senden

9

Dienstag, 7. September 2010, 14:22

Kann mir echt keiner helfen?

jvbsl

Noob

  • »jvbsl« ist männlich

Beiträge: 7 206

Dabei seit: 7. April 2010

Hilfreich-Bewertungen: 397

  • Private Nachricht senden

10

Dienstag, 7. September 2010, 15:33

wie sieht denn der Code aus, bei welchem du den Stream closest? Also nur den teil des Schließens...
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---

Ähnliche Themen

Social Bookmarks