Also, es gibt unzählige Beispiele, und wir werden kaum wissen welches du meinst. Netzwerken in .Net ist sehr umfangreich, und vielleicht sollte man besser etwas davon wissen bevor man anfängt alles zu beurteilen. Das mit Vb6 Winsock zu vergleichen ist kaum sinnvoll. Aber kluger Trick das ganze Betriebsystem einfrieren zu lassen, ich wüßte nicht wie man das machen könnte. Man hat in .Net auch Multithreading und asynchrone Funktionsaufrufe. Hier z.B. ist sehr einfacher Servercode um asynchron Daten zu empfangen So friert die Anwendung nicht ein. (cbr ist dein "DataArrival" Event).
Imports System.Net
Imports System.Net.Sockets
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend WithEvents RichTextBox1 As System.Windows.Forms.RichTextBox
Friend WithEvents ReceiveButton As System.Windows.Forms.Button
Friend WithEvents DataLabel As System.Windows.Forms.Label
Friend WithEvents ClearButton As System.Windows.Forms.Button
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.RichTextBox1 = New System.Windows.Forms.RichTextBox
Me.ReceiveButton = New System.Windows.Forms.Button
Me.DataLabel = New System.Windows.Forms.Label
Me.ClearButton = New System.Windows.Forms.Button
Me.SuspendLayout()
'
'RichTextBox1
'
Me.RichTextBox1.Location = New System.Drawing.Point(0, 8)
Me.RichTextBox1.Name = "RichTextBox1"
Me.RichTextBox1.Size = New System.Drawing.Size(280, 168)
Me.RichTextBox1.TabIndex = 0
Me.RichTextBox1.Text = ""
'
'ReceiveButton
'
Me.ReceiveButton.Location = New System.Drawing.Point(8, 184)
Me.ReceiveButton.Name = "ReceiveButton"
Me.ReceiveButton.Size = New System.Drawing.Size(56, 32)
Me.ReceiveButton.TabIndex = 1
Me.ReceiveButton.Text = "Receive"
'
'DataLabel
'
Me.DataLabel.Location = New System.Drawing.Point(104, 192)
Me.DataLabel.Name = "DataLabel"
Me.DataLabel.Size = New System.Drawing.Size(136, 32)
Me.DataLabel.TabIndex = 2
Me.DataLabel.Text = "Data: 0"
'
'ClearButton
'
Me.ClearButton.Location = New System.Drawing.Point(8, 224)
Me.ClearButton.Name = "ClearButton"
Me.ClearButton.Size = New System.Drawing.Size(56, 32)
Me.ClearButton.TabIndex = 3
Me.ClearButton.Text = "Clear"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(292, 273)
Me.Controls.Add(Me.ClearButton)
Me.Controls.Add(Me.DataLabel)
Me.Controls.Add(Me.ReceiveButton)
Me.Controls.Add(Me.RichTextBox1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub
#End Region
Dim conn As TcpClient
Dim nstrm As System.IO.Stream
Dim sr As System.IO.StreamReader
Dim netBuff(1000 - 1) As Byte
Dim enc As New System.Text.UTF8Encoding
Dim dec As System.Text.Decoder
Dim listener As New TcpListener(Net.IPAddress.Any, 1738)
Public Sub getData()
If IsNothing(conn) Then
listener.Start()
conn = listener.AcceptTcpClient
nstrm = conn.GetStream()
dec = enc.GetDecoder
nstrm.BeginRead(netBuff, 0, 1000, AddressOf cbr, Nothing)
Else
MsgBox("Server running")
End If
End Sub
Private Delegate Sub setTextHandler(ByVal data As String)
Public Sub cbr(ByVal ar As IAsyncResult)
Dim cnt As Integer
Dim data As String
Dim chars() As Char
Dim continue As Boolean = True
Try
cnt = conn.GetStream.EndRead(ar)
If cnt = 0 Then
continue = False
Else
ReDim chars(dec.GetCharCount(netBuff, 0, cnt) - 1)
dec.GetChars(netBuff, 0, cnt, chars, 0)
data = New String(chars, 0, chars.Length)
RichTextBox1.Invoke(CType(AddressOf setText, setTextHandler), _
New String() {data})
nstrm.BeginRead(netBuff, 0, 1000, AddressOf cbr, Nothing)
End If
Catch ex As System.Exception
Debug.WriteLine("Error: " + ex.Message)
continue = False
End Try
If Not continue Then
nstrm.Close()
conn.Close()
listener.Stop()
nstrm = Nothing
conn = Nothing
End If
End Sub
Private Sub setText(ByVal data As String)
RichTextBox1.AppendText(data)
Application.DoEvents()
DataLabel.Text = "Data: " + RichTextBox1.Text.Length.ToString()
End Sub
Private Sub ReceiveButton_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles ReceiveButton.Click
getData()
End Sub
Private Sub ClearButton_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles ClearButton.Click
RichTextBox1.Text = ""
End Sub
End Class ________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist |