Я новичок в сетевом программировании и пытался установить связь между тестовым сервером ICE API и моим приложением. Приведенный ниже код работает только один раз, когда я пытаюсь войти на сервер. Другими словами, когда я отправляю сообщение о входе в систему, сервер отвечает мне успешным входом. Получив это, я отправляю следующее сообщение на сервер, но в ответ я получаю 0, что означает, что сервер уже разорвал соединение. Может кто-нибудь взглянуть на мою клиентскую логику и указать мне правильное направление, почему вышеописанная ситуация происходит. Пожалуйста, помогите мне решить проблему, так как я уже несколько дней безуспешно. Спасибо.
Public Function connect() As Boolean
bConnected = True
Dim port As Int32 = Convert.ToInt32("80")
Dim server As String = "63.247.113.201"
Try
objClient = New System.Net.Sockets.TcpClient(server, port)
objClient.NoDelay = False
objClient.Client.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.KeepAlive, 1)
objClient.GetStream.BeginRead(byReadBuffer, 0, BYTES_TO_READ, New AsyncCallback(AddressOf doRead), Nothing)
Catch ex As Exception
RaiseEvent exErr(ex.ToString)
bConnected = False
End Try
Return bConnected
End Function
Public Function DoTCPRequest(ByVal data As String, ByVal resetSession As Boolean) As String
Dim objSw As IO.StreamWriter
Try
objSw = New IO.StreamWriter(objClient.GetStream)
objSw.Write(data & vbCrLf)
objSw.Flush()
Console.WriteLine("Sent:" + data)
Catch ex As Exception
RaiseEvent exErr(ex.ToString)
End Try
objClient.GetStream.BeginRead(byReadBuffer, 0, BYTES_TO_READ, AddressOf Me.doRead, Nothing)
Return System.Text.Encoding.UTF8.GetString(byReadBuffer, 0, BYTES_TO_READ)
End Function
Private Sub doRead(ByVal ar As System.IAsyncResult)
Dim nTotalRead As Integer
Try
Try
nTotalRead = objClient.GetStream.EndRead(ar) Catch ex As Exception
RaiseEvent exErr(ex.ToString)
End Try
If nTotalRead > 0 Then
Dim szReceivedString As String = System.Text.Encoding.UTF8.GetString(byReadBuffer, 0, nTotalRead)
RaiseEvent dataReceived(szReceivedString)
Console.WriteLine("Recv1:" + szReceivedString)
End If
objClient.GetStream.BeginRead(byReadBuffer, 0, BYTES_TO_READ, New AsyncCallback(AddressOf doRead), Nothing)
Catch ex As Exception
RaiseEvent exErr(ex.ToString)
End Try
End Sub