コード例 #1
0
        /// <summary>
        /// Is callback of Send
        /// </summary>
        /// <param name="asyncResult"></param>
        protected static void SendCallback(IAsyncResult asyncResult)
        {
            try
            {
                // Retrieve the socket from the state object.
                Socket client = (Socket)asyncResult.AsyncState;

                // Complete sending the data to the remote device.
                int bytesSent = client.EndSend(asyncResult);
                Trace.WriteLine("Sent {0} bytes to server.", bytesSent.ToString());

                // Signal that all bytes have been sent.
                SendDone.Set();
            }
            catch (Exception e)
            {
                Trace.WriteLine(e.ToString());
            }
        }
コード例 #2
0
        public string SendMessage(string msg)
        {
            try
            {
                Helper.SendClient(_client, $"{msg}<EOF>");
                SendDone.WaitOne();

                State state = new State(1024, this);
                state.StateSocket = _client;

                Helper.Receive(ref state);
                ReceiveDone.WaitOne();

                return(state.StringBuffer.ToString());
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            return("");
        }
コード例 #3
0
ファイル: Client.cs プロジェクト: P4ll/network-ecm-tasks
        public string SendMessage(string msg, TextBox consoleInput)
        {
            try
            {
                State state = new State(1024, this);
                state.StateSocket = _client;
                state.StateForm   = ClientForm;

                consoleInput.Text = "";
                AddLog(msg.Trim('\n').Trim('\r'));

                Helper.SendClient(state, msg);
                SendDone.WaitOne();

                state             = new State(1024, this);
                state.StateSocket = _client;
                state.StateForm   = ClientForm;

                Helper.Receive(ref state);
                ReceiveDone.WaitOne();
                state.StringBuffer.Clear();

                if (!state.StateSocket.Connected || msg.Split(' ')[0].ToLower().Trim('\n').Trim('\r') == "bye")
                {
                    AddLog("Соединение закрыто, через 2 секунды окно закроется");
                    Task.Factory.StartNew(async() =>
                    {
                        await Task.Delay(2000);
                        ClientForm.SafeClose();
                    });
                }

                return(state.StringBuffer.ToString());
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            return("");
        }