|
分類:[C#]
こんにちは。
非同期サーバーについて、プログラムの途中でポート番号を
変更したい場合、どのように行えばよいか、
ご存知の方がいらっしゃいましたら
ご教授いただけませんでしょうか。
以下に、作成したプログラムを示します。
以下のように非同期でアクセス待ち状態になっているところで、
別のモジュールからポート番号を変更したいと思っています。
具体的には、別のモジュールから「textBox.Text」の内容を
書き換え、それを反映させてサーバーを再立ち上げしたいです。
よろしくお願いいたします。
private void Form1_Load(object sender, EventArgs e)
{
// TCPサーバー
Int32 port = port;
IPAddress localAddr = Int32.Parse(textBox.Text);
IPEndPoint ipe = new IPEndPoint(localAddr, port);
server = new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
server.Bind(ipe);
server.Listen(100);
StartAccept(server);
}
private static void StartAccept(System.Net.Sockets.Socket server)
{
//接続要求待機を開始する
server.BeginAccept(
new System.AsyncCallback(AcceptCallback), server);
}
private static void AcceptCallback(System.IAsyncResult ar)
{
//サーバーSocketの取得
System.Net.Sockets.Socket server =
(System.Net.Sockets.Socket)ar.AsyncState;
//接続要求を受け入れる
System.Net.Sockets.Socket client = null;
try
{
//クライアントSocketの取得
client = server.EndAccept(ar);
}
catch (Exception ex)
{
return;
}
// データ受信処理
// 接続終了
client.Close();
//接続要求待機を再開する
server.BeginAccept(
new System.AsyncCallback(AcceptCallback), server);
}
|