/// <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()); } }