|
'클라이언트에서 데이타를 보내는경우에 발생하는 이벤트 Private Sub sokServer_DataArrival(ByVal bytesTotal As Long) ' 상태바에 현재상태를 나타냄 stbString.Panels(1).Text = "DataArrival " & sokServer.State ' 수신데이타를 텍스트상자에 출력 Dim work As String sokServer.GetData work, vbString txtSendData.Text = work End Sub 소켓 통신에 vb6.0에서는 DataArrival를 사용해서 데이타 수신에 관한 처리를 했습니다. vb.net에서는 아래와 같이 할려고 하는데 수신에 대해 아래 부분 함수를 처리하지 못합니다. vb6.0처럼 데이터 수신처리를 하려고 하는데, 아래와 같은 방법을 이용하려면 어떻게 해야하는지 알고 싶습니다. 첨부 파일을 올리는데 이 방법과 비슷한 방법으로 폼에서 beginread하지 않고 다른 부분에서 호출하면서 beginread하려고 합니다. 소켓 통신의 비동기 송수신 방법에 대해 자세히 알려 주세요
' This is the callback function for TcpClient.GetStream.Begin to get an ' asynchronous read.
Private Sub DoRead(ByVal ar As IAsyncResult) Dim BytesRead As Integer Dim strMessage As String
Try ' Finish asynchronous read into readBuffer and return number of bytes read. BytesRead = client.GetStream.EndRead(ar) If BytesRead < 1 Then ' If no bytes were read server has close. Disable input window. MarkAsDisconnected() Exit Sub End If
' Convert the byte array the message was saved into, minus two for the ' Chr(13) and Chr(10) strMessage = Encoding.ASCII.GetString(readBuffer, 0, BytesRead - 2)
ProcessCommands(strMessage)
' Start a new asynchronous read into readBuffer. client.GetStream.BeginRead(readBuffer, 0, READ_BUFFER_SIZE, AddressOf DoRead, Nothing) Catch e As Exception MarkAsDisconnected() End Try End Sub
|