2016-09-23 3 views
0

をクラッシュあなたが実行しようcode.Ifで、プログラムは、コンピュータソケットプログラムは、ここでコンピュータ

IPEndPoint ip = new IPEndPoint(IPAddress.Any, 10000); 
    Socket sk = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
    sk.Bind(ip); 
    sk.Listen(100); 
    while (true) { 
    sk.BeginAccept(new AsyncCallback(OnReveive), sk); 
    } 

    private static void OnReveive(IAsyncResult ar) { 
    Socket sock = (Socket) ar.AsyncState; 
    Socket cl = sock.EndAccept(ar); 
    Console.WriteLine("New Connection from" + cl.RemoteEndPoint.ToString()); 
    } 

がクラッシュします私は、なぜそれが私のコンピュータをクラッシュん

+0

o_oコンピュータがクラッシュしますか?あなたは死のブルースクリーンのような意味ですか?無限にぶら下がっています(スタックスレッド)? – Eon

+0

いいえ、物理メモリが非常に高速に増加するようです。 –

+2

ここで質問は何ですか? –

答えて

6
while (true) { 
    sk.BeginAccept(new AsyncCallback(OnReveive), sk); 
    } 

BeginAcceptでお願いしたいと思います即座に返す非同期メソッドは、new AsyncCallback(OnReveive)コールバックを使用してコードがメモリプールを急速に満たします。それを一度だけ呼び、whileに入れないでください。

またはブロッキングメソッドAccept()を呼び出します。

+1

これは彼の質問だったかどうかはっきりしていません。素敵なキャッチ:P – Eon

+0

ありがとう –

関連する問題