Exemple #1
0
        /// <summary>
        /// コールバックされたらデータを送信する。
        /// </summary>
        /// <param name="state">送信するデータが格納されている</param>
        private void SendWorker(object state)
        {
            if (!isConnecting)
            {
                return;
            }
            if (ip == PhotoChatClient.MyIPAddress)
            {
                return;
            }

            try
            {
                if (writer == null)
                {
                    NetworkStream networkStream = new NetworkStream(socket);
                    writer = new BinaryWriter(networkStream);
                }
                lock (writer)
                {
                    ISendable sendData  = (ISendable)state;
                    byte[]    dataBytes = sendData.GetDataBytes();

                    // データタイプの送信
                    writer.Write(sendData.Type);

                    // バイト列の送信
                    writer.Write(dataBytes.Length);
                    writer.Write(dataBytes);
                    writer.Flush();
                }
            }
            catch (SocketException)
            {
                Close();
            }
            catch (IOException)
            {
                Close();
            }
            catch (Exception e)
            {
                if (isConnecting)
                {
                    PhotoChat.WriteErrorLog(e.ToString());
                }
            }
        }
            /// <summary>
            /// データを送信する。
            /// </summary>
            /// <param name="data">送信データ</param>
            public void Send(ISendable data)
            {
                if (data == null || !isConnecting)
                {
                    return;
                }

                try
                {
                    byte[] dataBytes = data.GetDataBytes();

                    // データタイプの送信
                    writer.Write(data.Type);

                    // バイト列の送信
                    writer.Write(dataBytes.Length);
                    writer.Write(dataBytes);
                    writer.Flush();
                }
                catch (Exception e)
                {
                    PhotoChat.WriteErrorLog(e.ToString());
                }
            }