コード例 #1
0
        private void OnConnectCallback(IAsyncResult iar)
        {
            try
            {
                Socket clientSocket = iar.AsyncState as Socket;
                clientSocket.EndConnect(iar);
                this.m_Socket = clientSocket;
                m_IsConnected = true;

                //Bắt đầu nhận dữ liệu
                ClientAsyncState asyncState = new ClientAsyncState(clientSocket);
                clientSocket.BeginReceive(asyncState.Buffer, 0, BufferSize, SocketFlags.None, OnReceiveCallback, asyncState);

                //Nem su kien
                RaiseConnectionOpenedEvent(new ConnectionOpenedEventArgs {
                    IsSuccessful = true
                });
            }
            catch
            {
                RaiseConnectionOpenedEvent(new ConnectionOpenedEventArgs {
                    IsSuccessful = false
                });
            }
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: Moerty/dnstools
        private static string ShortResponseInfo(ClientAsyncState state, Response response)
        {
            string s = String.Format("{0} bytes from {1} ({2}) in {3}ms: {4}",
                                     response.Data.Length,
                                     state.Server.ToString(),
                                     (state.Client as DnsUdpClient != null ? "UDP" : "TCP"),
                                     response.Timestamp.Subtract(state.Request.Timestamp).TotalMilliseconds,
                                     response.Header.RCODE.ToString()
                                     );

            if (response.Header.AA)
            {
                s += " (authoritative)";
            }
            return(s);
        }
コード例 #3
0
        private void OnReceiveCallback(IAsyncResult iar)
        {
            ClientAsyncState asyncState   = iar.AsyncState as ClientAsyncState;
            Socket           clientSocket = asyncState.ClientSocket;

            int readCount = clientSocket.EndReceive(iar);
            TcpHeaderFactory headerFactory = asyncState.HeaderFactory;

            headerFactory.PumpData(asyncState.Buffer, 0, readCount);

            string message;

            while (headerFactory.TryProcess(out message))
            {
                OnReceiveMessage(message);
            }

            clientSocket.BeginReceive(asyncState.Buffer, 0, BufferSize, SocketFlags.None, OnReceiveCallback, asyncState);
        }
コード例 #4
0
ファイル: Form1.cs プロジェクト: Moerty/dnstools
        private void OnClientResponseReceived(IAsyncResult asyncResult)
        {
            try
            {
                ClientAsyncState state    = (ClientAsyncState)asyncResult.AsyncState;
                Response         response = state.Client.EndProcess(asyncResult);
                SetText(labelClientResponse, ShortResponseInfo(state, response));

                StringBuilder result = new StringBuilder();
                RenderResponse(response, result);
                SetText(textBoxClientResponse, result.ToString());
                //textBoxClientResponse.Text = result.ToString();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                Cursor = Cursors.Default;
                buttonClientSend.Enabled = true;
            }
        }
コード例 #5
0
ファイル: Form1.cs プロジェクト: boethin/dnstools
 private static string ShortResponseInfo(ClientAsyncState state, Response response)
 {
   string s = String.Format("{0} bytes from {1} ({2}) in {3}ms: {4}",
     response.Data.Length,
       state.Server.ToString(),
       (state.Client as DnsUdpClient != null ? "UDP" : "TCP"),
       response.Timestamp.Subtract(state.Request.Timestamp).TotalMilliseconds,
                 response.Header.RCODE.ToString()
       );
   if (response.Header.AA)
     s += " (authoritative)";
   return s;
 }