• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javaandroidc++linuxc#objective-ccocoa誰得qtrubybathyscaphegamewindowspythonphpguic翻訳omegattwitterframeworkbtronarduinovb.net計画中(planning stage)directxpreviewertestゲームエンジンdom

ソケットを使ってクライアントサーバプログラムを作成するための C# ライブラリ


Commit MetaInfo

Révisionc1268bf25d33c0f04227c59465901a537b208059 (tree)
l'heure2015-08-22 23:01:59
Auteurtsntsumi <tsntsumi@tsnt...>
Commitertsntsumi

Message de Log

重複したコードをリファクタリング

各導出クラスのコンストラクタの重複したコードを、基底クラスのコンストラク
タにまとめた。

また、UdpServer.Start() と MulticastUdpServer.Start() の重複コードも
UdpServer.Setup() にまとめた。

Change Summary

Modification

--- a/src/SocketNet/SocketNet/BroadcastUdpServer.cs
+++ b/src/SocketNet/SocketNet/BroadcastUdpServer.cs
@@ -40,11 +40,8 @@ namespace SocketNet
4040 /// </summary>
4141 /// <param name="port">バインドするポート番号。</param>
4242 public BroadcastUdpServer(int port)
43+ : base(IPAddress.Any, port, TransmissionType.Broadcast)
4344 {
44- IPAddress = IPAddress.Any;
45- Port = port;
46- TransmissionType = TransmissionType.Broadcast;
47- asyncCallback = new AsyncCallback(EndReceive);
4845 }
4946 }
5047 }
--- a/src/SocketNet/SocketNet/LocalBroadcastUdpServer.cs
+++ b/src/SocketNet/SocketNet/LocalBroadcastUdpServer.cs
@@ -40,11 +40,8 @@ namespace SocketNet
4040 /// </summary>
4141 /// <param name="port">バインドするポート番号。</param>
4242 public LocalBroadcastUdpServer (int port)
43+ : base(IPAddress.Any, port, TransmissionType.LocalBroadcast)
4344 {
44- IPAddress = IPAddress.Any;
45- Port = port;
46- TransmissionType = TransmissionType.LocalBroadcast;
47- asyncCallback = new AsyncCallback(EndReceive);
4845 }
4946 }
5047 }
--- a/src/SocketNet/SocketNet/MulticastUdpServer.cs
+++ b/src/SocketNet/SocketNet/MulticastUdpServer.cs
@@ -40,30 +40,20 @@ namespace SocketNet
4040 /// </summary>
4141 /// <param name="ipAddress">ジョインするマルチキャストIPアドレス。</param>
4242 /// <param name="port">バインドするポート番号。</param>
43- public MulticastUdpServer (IPAddress ipAddress, int port)
43+ public MulticastUdpServer (IPAddress multicastAddress, int port)
44+ : base(IPAddress.Any, port, TransmissionType.Multicast)
4445 {
45- IPAddress = ipAddress;
46- Port = port;
47- TransmissionType = TransmissionType.Multicast;
48- asyncCallback = new AsyncCallback(EndReceive);
46+ MulticastAddress = multicastAddress;
4947 }
5048
5149 /// <summary>
52- /// Udpサーバを開始してデータ受信を開始します。
50+ /// UdpClient を作成します。
5351 /// </summary>
54- public override void Start()
52+ /// <param name="ipEndPoint">IPエンドポイント。</param>
53+ protected override void Setup(IPEndPoint ipEndPoint)
5554 {
56- IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, Port);
57-
58- udpClient = new UdpClient();
59- udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
60- udpClient.Client.Bind(ipEndPoint);
61- udpClient.JoinMulticastGroup(IPAddress);
62-
63- UdpState udpState = new UdpState(udpClient, ipEndPoint);
64-
65- acceptingConnections = true;
66- udpClient.BeginReceive(asyncCallback, udpState);
55+ base.Setup(ipEndPoint);
56+ udpClient.JoinMulticastGroup(MulticastAddress);
6757 }
6858
6959 /// <summary>
--- a/src/SocketNet/SocketNet/UdpServer.cs
+++ b/src/SocketNet/SocketNet/UdpServer.cs
@@ -143,15 +143,27 @@ namespace SocketNet
143143 }
144144
145145 /// <summary>
146+ /// コンストラクタ。
147+ /// </summary>
148+ /// <param name="ipAddress">バインドするIPアドレス。</param>
149+ /// <param name="port">バインドするポート番号。</param>
150+ /// <param name="transmissionType">転送タイプ。</param>
151+ protected UdpServer (IPAddress ipAddress, int port, TransmissionType transmissionType)
152+ {
153+ IPAddress = ipAddress;
154+ Port = port;
155+ TransmissionType = transmissionType;
156+ asyncCallback = new AsyncCallback(EndReceive);
157+ }
158+
159+ /// <summary>
146160 /// Udpサーバを開始してデータ受信を開始します。
147161 /// </summary>
148- public virtual void Start()
162+ public void Start()
149163 {
150164 IPEndPoint ipEndPoint = new IPEndPoint(IPAddress, Port);
151165
152- udpClient = new UdpClient();
153- udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
154- udpClient.Client.Bind(ipEndPoint);
166+ Setup(ipEndPoint);
155167
156168 UdpState udpState = new UdpState(udpClient, ipEndPoint);
157169
@@ -160,6 +172,17 @@ namespace SocketNet
160172 }
161173
162174 /// <summary>
175+ /// UdpClient を作成します。
176+ /// </summary>
177+ /// <param name="ipEndPoint">IP エンドポイント。</param>
178+ protected virtual void Setup(IPEndPoint ipEndPoint)
179+ {
180+ udpClient = new UdpClient();
181+ udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
182+ udpClient.Client.Bind(ipEndPoint);
183+ }
184+
185+ /// <summary>
163186 /// Udpサーバを停止します。
164187 /// </summary>
165188 public virtual void Stop()
--- a/src/SocketNet/SocketNet/UnicastUdpServer.cs
+++ b/src/SocketNet/SocketNet/UnicastUdpServer.cs
@@ -41,11 +41,8 @@ namespace SocketNet
4141 /// <param name="ipAddress">バインドするIPアドレス。</param>
4242 /// <param name="port">バインドするポート番号。</param>
4343 public UnicastUdpServer (IPAddress ipAddress, int port)
44+ : base(ipAddress, port, TransmissionType.Unicast)
4445 {
45- IPAddress = ipAddress;
46- Port = port;
47- TransmissionType = TransmissionType.Unicast;
48- asyncCallback = new AsyncCallback(EndReceive);
4946 }
5047 }
5148 }