Jag har en tcpclient ansluten till en server och använder mig av följnade kod ungefär: EFtersom du skriver: Hade detta liggande, du kan kanske få lite tips av det.Asynkrona och synkrona operationer LÖST
    
    
<CODE>
buffer = System.Text.Encoding.ASCII.GetBytes(sPassword & vbCrLf)
oTelnetStream.Write(buffer, 0, buffer.Length)
ReDim buffer(oSocket.ReceiveBufferSize)
oTelnetStream.Read(buffer, 0, CInt(oSocket.ReceiveBufferSize))
sResponse = Trim(Replace(Microsoft.VisualBasic.Left(System.Text.Encoding.ASCII.GetString(buffer), InStr(System.Text.Encoding.ASCII.GetString(buffer), Chr(0))), vbCrLf, vbNullString))
sResponse = Microsoft.VisualBasic.Right(Trim(sResponse), 1)
If sResponse <> ">" Then
 nCounter = nCounter + 1
 If nCounter = 4 Then End
 GoTo Login
End If
</CODE>
problemet är att i runtime så beter sig både read och Write-metoderna i min stream som om dom vore asynkrona, dvs koden löper vidare utan att ta hänsyn till att en läsning pågår. Hur löser jag det, förslag, länkar, allt ni kan komma på är välkommet!Sv: Asynkrona och synkrona operationer
    
    
>allt ni kan komma på är välkommet!
Så kan jag väl komma med det ganska lama förslaget:
Sätt en timer som styr när nästa läsning/skrivning skall ske.
/Niklas JanssonSv: Asynkrona och synkrona operationer
    
    
<code>
Imports System.Net
Imports System.Net.Sockets
Imports System.Threading
Imports System.Text
Private M_Wait As New ManualResetEvent(False)
Private Sub Connect()
        Dim ipAdd As IPAddress
        'Parse IP string to correct address
        Try
            ipAdd = IPAddress.Parse(TextBox2.Text)
        Catch ex As FormatException
            TextBox1.Text = "Format error on IP address." & vbCrLf
        Catch ex As ArgumentNullException
            TextBox1.Text = "No IP address has been entered." & vbCrLf
        End Try
        Dim conHost As New IPEndPoint(ipAdd, 80)
        'Create Socket
        Dim oSock As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
        Dim state As New StateObj()
        state.objSock = oSock
        M_Wait.Reset()
        Dim iAs As IAsyncResult = oSock.BeginConnect(conHost, AddressOf Connect_Callback, state)
        M_Wait.WaitOne()
        If iAs.IsCompleted Then
            TextBox1.Text += "Connected." & vbCrLf
        Else
            TextBox1.Text += "Connection failed." & vbCrLf
        End If
        'Skickar
        Dim sPassword = "StringToSend"
        Dim b As Byte() = Encoding.ASCII.GetBytes(sPassword)
        M_Wait.Reset()
        iAs = oSock.BeginSend(b, 0, b.Length, SocketFlags.None, AddressOf Send_Callback, state)
        M_Wait.WaitOne()
        'Tar emot
        M_Wait.Reset()
        iAs = oSock.BeginReceive(state.buffer, 0, state.BUFFER_SIZE, SocketFlags.Peek, AddressOf Recv_Callback, state)
        M_Wait.WaitOne()
    End Sub
    Private Sub Connect_Callback(ByVal ar As IAsyncResult)
        Dim state As StateObj = CType(ar.AsyncState, StateObj)
        state.objSock.EndConnect(ar)
        M_Wait.Set()
    End Sub
    Private Sub Send_Callback(ByVal ar As IAsyncResult)
        Dim state As StateObj = CType(ar.AsyncState, StateObj)
        state.objSock.EndSend(ar)
        M_Wait.Set()
    End Sub
    Private Sub Recv_Callback(ByVal ar As IAsyncResult)
        Dim state As StateObj = CType(ar.AsyncState, StateObj)
        Dim readBytes = state.objSock.EndReceive(ar)
        If readBytes > 0 Then
            state.stringBuild.Append(Encoding.ASCII.GetString(state.buffer, 0, readBytes))
            state.objSock.BeginReceive(state.buffer, 0, state.BUFFER_SIZE, 0, AddressOf Recv_Callback, state)
        Else
            TextBox3.Text += state.stringBuild.ToString
            state.objSock.Close()
            M_Wait.Set()
        End If
    End Sub
End Class
Public Class StateObj
    Public objSock As Socket = Nothing
    Public Const BUFFER_SIZE As Int32 = 1024
    Public buffer(1024) As Byte
    Public stringBuild As New StringBuilder()
End Class
</code>