also ich hab das jetzt so versucht:
Imports System.Net.Sockets
Public Class Form1
Dim sck_Server_TcpListener As TcpListener
Private _clients As New List(Of TcpClient)
Dim sck_Server_NWS As NetworkStream
Dim bytes() As Byte
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
sck_Server_TcpListener = New TcpListener(System.Net.IPAddress.Parse(0), _
44000)
sck_Server_TcpListener.Start()
sck_Server_TcpListener.BeginAcceptTcpClient(AddressOf OnConnect, New _
Object)
End Sub
Private Sub OnConnect(ByVal data As System.IAsyncResult)
'TcpClient holen der zu dieser Verbindung gehört.
Dim client As TcpClient = sck_Server_TcpListener.EndAcceptTcpClient( _
data)
'In Liste merken
_clients.Add(client)
MsgBox("Connected")
Dim info As New ReadDataState(client, bytes)
'ReDim bytes(sck_ServerTcpClient.ReceiveBufferSize)
Dim ns As NetworkStream = client.GetStream()
ns.BeginRead(info.ReceiveBuffer, 0, info.ReceiveBuffer.Length, _
AddressOf _
OnDataArrival, info)
End Sub
Private Sub OnDataArrival(ByVal data As System.IAsyncResult)
Dim clientdata As String = System.Text.Encoding.ASCII.GetString(bytes)
Dim info As ReadDataState = CType(data.AsyncState, ReadDataState)
Dim ns As NetworkStream = info.Client.GetStream()
Dim numBytesRead = ns.EndRead(data)
Dim message As String = System.Text.Encoding.ASCII.GetString( _
info.ReceiveBuffer)
MsgBox(message)
ns.BeginRead(info.ReceiveBuffer, 0, info.ReceiveBuffer.Length, _
AddressOf _
OnDataArrival, info)
End Sub
End Class
Public Class ReadDataState
Public Sub New(ByVal client As TcpClient, ByVal bytes As Byte())
Me.Client = client
Me.ReceiveBuffer = bytes
End Sub
Public Client As TcpClient
Public ReceiveBuffer As Byte()
End Class das problem ist, dass wenn der client am server connected, gibt er noch die msgbox aus, bricht dann aber bei
ns.BeginRead(info.ReceiveBuffer, 0, info.ReceiveBuffer.Length, AddressOf _
OnDataArrival, info) in der OnConnect-Funktion ab. die fehlermeldung ist: Object reference not set to an instance of an object.
scheinbar wird bei dem GetStream() ein NullStream bzw irgendein nicht vorhandener stream zurückgegeben. weisst du weiter ? |