TCPCoreLib
- Release
- Closed Source
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 48 Antworten in diesem Thema. Der letzte Beitrag () ist von xd-franky-5.
-
-
Hmm wollte deine Lib gerade testen aber durch .NET Framework 4.5 unbrauchbar - hab nämlich nur bis 4 und msdn.microsoft.com/de-de/vstudio/hh487282.aspx bietet mir auch nichts passendes an. Arbeiten tu ich mit VS10.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „backtothetoast“ ()
-
-
-
-
-
Sry, war bei Bekannten aber das gehört hier nicht hin also:
- Ich habe bY nicht falsch geschrieben sondern es von einem Marken Logo abgeschaut und vllt. ist es sowas wie ein Marken Zeichen ?!
- Soll ich es jetzt Asynchron machen oder nicht ?
- Ich versteh nicht warum manche einfach nicht zu einem neuerem VS und Framework greifen wollen. Ihr könnt auch nicht bei Spiele-Hersteller beklagen, dass das Spiel einen besseren Prozessor etc. braucht als ihr habt. Also legt euch ein neues FW und VS zu oder Pech gehabt.
Im nächsten Update:
-Statt Stopp, Stop
-Beschreibung zu den Methoden und Variablen
-IP als System.Net.IPAddress angeben
-System.Net.IPAddress auch im Beispiel Projekt
-Statt CInt, Integer.Parse
-statt MsgText und co. message ...
-Englisch überall angewendet (nur die Beispiel Projekte sind auf Deutsch)
-Datei sendenDieser Beitrag wurde bereits 3 mal editiert, zuletzt von „xd-franky-5“ ()
-
-
I/O-gebundenes Threadblocking lässt sich recht einfach vermeiden. EDR hat dazu mal was geschrieben:
[VB.NET] VersuchsChat mit leistungsfähigem Server
Noch einfacher ist es natürlich mit TAP (async/await). Dafü rmuss man das aber erstmal können.
Edit:
Ich hab da so eine Vermutung:
Kann man überhaupt text mit Zeilenumbruch schicken?Von meinem iPhone gesendet
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „nikeee13“ ()
-
Hallo @xd-franky
ich habe vor kurzer zeit auch mal an einer kleinen NetworkEngine gearbeitet und bin zu dem schluss gekommen das sie einfach nicht genug Funktionen hat um sie zu veröffentlichen wenn du willst kannst du den code weiterverwenden.
Der Server ist asynchron
Spoiler anzeigen VB.NET-Quellcode
- Public Class Form1
- Public server As New Network_Server
- Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
- AddHandler server.NewConnection, AddressOf NewConnection
- AddHandler server.Newpacked, AddressOf Newpacked
- AddHandler server.ConnectionClose, AddressOf ConnectionClose
- server.Start(5423)
- End Sub
- Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
- server.Close()
- End Sub
- Public Sub NewConnection(ByVal c As Network_Server.Client)
- Me.Invoke(Sub() RichTextBox1.Text &= "Der User = " & c.McID & " hat die Connection begonnen" & Environment.NewLine)
- server.WritetoClient(c, "Hallo Client :)" & Environment.NewLine)
- server.ReadDataFromClient(c, Network_Server.Buffersize.SuperHighPacked)
- End Sub
- Public Sub ConnectionClose(ByVal c As Network_Server.Client)
- Me.Invoke(Sub() RichTextBox1.Text &= "Der User = " & c.McID & " hat die Connection geschlossen" & Environment.NewLine)
- End Sub
- Public Sub Newpacked(ByVal c As Network_Server.Client, ByVal text As String)
- Me.Invoke(Sub() RichTextBox1.Text &= text & Environment.NewLine)
- End Sub
- Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
- For i = 0 To server.list.Count - 1
- server.WritetoClient(server.list.Item(i), TextBox2.Text & Environment.NewLine)
- Next
- End Sub
- End Class
- Public Class Network_Server
- Public Server As Net.Sockets.TcpListener
- Public list As New List(Of Client)
- Private IPendPoint As Net.IPEndPoint
- Private Stoping As Boolean = False
- Private ac As New System.Text.ASCIIEncoding
- #Region "Events"
- Public Event NewConnection(ByVal client As Network_Server.Client)
- Public Event ConnectionClose(ByVal client As Network_Server.Client)
- Public Event Newpacked(ByVal client As Network_Server.Client, Text As String)
- #End Region
- Public Sub Start(ByVal port As Integer)
- Me.IPendPoint = New Net.IPEndPoint(System.Net.IPAddress.Any, port)
- Server = New Net.Sockets.TcpListener(Me.IPendPoint)
- Server.Start()
- Server.BeginAcceptSocket(AddressOf ReadClients, Nothing)
- End Sub
- Private Sub ReadClients(ByVal ar As IAsyncResult)
- Dim clientc As Integer = 0
- Do
- Dim c As New Net.Sockets.TcpClient
- c = Server.AcceptTcpClient
- Dim ce As New Network_Server.Client()
- ce.ipendpoint = CType(c.Client.RemoteEndPoint, Net.IPEndPoint)
- ce.stream = c.GetStream()
- ce.McID = clientc
- clientc += 1
- list.Add(ce)
- RaiseEvent NewConnection(ce)
- Loop Until Stoping = True
- End Sub
- Private Sub Read_Callback(ar As IAsyncResult)
- Dim state As StateObject = CType(ar.AsyncState, StateObject)
- If ar.IsCompleted = True Then
- Try
- state.cl.stream.EndRead(ar)
- Catch ex As Exception
- RaiseEvent ConnectionClose(state.cl)
- list.Remove(state.cl)
- End Try
- Dim text As String = ac.GetString(state.buffer)
- text = text.Replace(Chr(0), "")
- If text = String.Empty Then
- RaiseEvent ConnectionClose(state.cl)
- list.Remove(state.cl)
- Else
- RaiseEvent Newpacked(state.cl, ac.GetString(state.buffer))
- Dim buff(state.buffer.Length) As Byte
- state.buffer = buff
- state.cl.stream.BeginRead(state.buffer, 0, state.buffer.Length, AddressOf Read_Callback, state)
- End If
- End If
- End Sub
- Public Sub ReadDataFromClient(ByVal cl As Network_Server.Client, ByVal count As Integer)
- Try
- Dim p As New StateObject(count)
- p.cl = cl
- p.cl.stream.BeginRead(p.buffer, 0, count, AddressOf Read_Callback, p)
- Catch ex As Exception
- End Try
- End Sub
- Public Sub WritetoClient(ByVal client As Network_Server.Client, Text As String)
- Try
- Dim bytes As Byte() = ac.GetBytes(Text)
- client.stream.Write(bytes, 0, bytes.Length)
- client.stream.Flush()
- Catch ex As Exception
- End Try
- End Sub
- Public Sub WritetoClient(ByVal client As Network_Server.Client, bytes As Byte())
- Try
- client.stream.Write(bytes, 0, bytes.Length)
- client.stream.Flush()
- Catch ex As Exception
- End Try
- End Sub
- Public Sub Close()
- Stoping = True
- Server.Stop()
- For i = 0 To list.Count - 1
- list.Item(i).stream.Close()
- Next
- list.Clear()
- End Sub
- Public Class Client
- Public stream As Net.Sockets.NetworkStream
- Public ipendpoint As Net.IPEndPoint
- Public McID As Long
- End Class
- Public Class StateObject
- Public cl As Network_Server.Client
- Public buffer() As Byte
- Public Sub New(ByVal size As Integer)
- Dim buff(size) As Byte
- buffer = buff
- End Sub
- End Class
- Public Enum Buffersize
- LowLengthPacked = 100
- NormalLengthPacked = 500
- HighLengthPacked = 1000
- SuperHighPacked = 9999
- End Enum
- End Class
MFG 0x426c61636b4e6574776f726b426974
InOffical VB-Paradise IRC-Server
webchat.freenode.net/
Channel : ##vbparadiseDieser Beitrag wurde bereits 2 mal editiert, zuletzt von „BlackNetworkBit“ ()
-
Bringt mir nur sehr wenig, wenn ich die zusammenhänge und so in dem Code-Batzen nicht verstehe, weil ich es nicht selber gemacht hab xD Aber trotzdem danke. Vllt. hilft es ja anderen.
@nikeee13
Ich hab gerade keine Zeit um es zu testen aber teste du es halt mal. Ich weiß es auf jeden Fall nicht auswendig. Normalerweise schon aber es kann sich eben auch ein Fehler eingeschlichen haben -
-
Dein Konzept ist schon falsch, du schickst Strings und interpretierst diese. Viel besser wär es, wenn man Objekte in den NetworkStream serialisieren würde, und diese am anderen Ende deserialisieren. Somit kannst du Klassen, Dateien, alles mögliche versenden, und das ohne großen Aufwand.
-
-
Im Client bzw Server sitzen spezielle PackageListener<Type> der Server durchläuft alle und schaut ob der Typ des Pakets passt, wenn ja wird dieses an den PackageListener weiter gegeben und dieser macht das irgendwas damit.
-
-
Das ist ziemlich langwierig.. du kannst ja mal in meiner Git schauen: github.com/ThuCommix/Sharpex.G…Library/Framework/Network
Dort wurde das umgesetzt. -
-
Geändert wurde:
- Statt Stopp, Stop
- Beschreibung zu den Methoden und Variablen
- IP als System.Net.IPAddress angeben
- System.Net.IPAddress auch im Beispiel Projekt
- Statt CInt, Integer.Parse
- statt MsgText und co. message ...
- Englisch überall angewendet (nur die Beispiel Projekte sind auf Deutsch)
- Datei senden
Wie das angewendet wird, wird in den Beispielen oder im Tutorial beim Hauptpost gezeigt.
Screenshot(s):
Download:
Im Anhang
Hoffe auf Konstruktive Kritik und Fragen sind auch erwünscht :) -
Funktioniert diese Lib auch auf einem PC ohne Netzwerkanschluss. Also mit localhost:<Port> oder 127.0.0.1 als IP? Ich entwickle gerade eine Anwendung auf einem PC ohne Netzwerkanschluss die später ein Netzwerk managen soll. Später wird der PC natürlich einen Anschluss haben, ich will allerdings nicht so lange warten.Hmkay.
-
Ähnliche Themen
-
Visual Basic: Kommunikation zwischen 2 Programmen aber wie?
Gelöschter Benutzer - - Sonstige Problemstellungen
-
15 Benutzer haben hier geschrieben
- xd-franky-5 (12)
- Gast (9)
- thefiloe (4)
- ThuCommix (3)
- nikeee13 (3)
- Manawyrm (3)
- BlackNetworkBit (3)
- Andy (3)
- Trade (2)
- RushDen (2)
- SpaceyX (1)
- LaMiy (1)
- jedijaeger (1)
- ichduersie (1)
- Arby (1)