예제 #1
0
        private void sendCallback(IAsyncResult ar)
        {
            try
            {
                sendState state    = ar.AsyncState as sendState;
                int       sizeSend = state.socket.EndSend(ar);

                if (!state.sent)
                {
                    log("Sizeinfo sent.");
                    state.sent = true;
                    //sending actual data
                    state.socket.BeginSend(state.data, 0, state.data.Length, SocketFlags.None, new AsyncCallback(sendCallback), state);
                }
                else
                {
                    log($"Sent {sizeSend} Bytes to the Server.");
                    state.Dispose();
                }
            }
            catch
            {
                log("Failed sending Message!");
                closeClient();
            }
        }
예제 #2
0
        public void sendData(byte[] data)
        {
            try
            {
                //send sizeinfo
                byte[] sizeInfo = BitConverter.GetBytes(data.Length);

                sendState state = new sendState();
                state.socket = this.socket;
                state.data   = data;

                state.socket.BeginSend(sizeInfo, 0, sizeInfo.Length, SocketFlags.None, new AsyncCallback(sendCallback), state);
            }
            catch
            {
                log("Error sending Message to the Client: " + this.id);
                closeClient();
            }
        }