トップページ
ひらく | たたむ | ページトップ
↓マウスで反転選択した文字を検索
C#
   
ページ内検索 ページ外検索
検索したい文字を入力して
ENTERを押すと移動します。
\n
[ トップページ ]
[ ____CommandPrompt ] [ ____JScript ] [ ____MySQL ] [ ____Cygwin ] [ ____Java ] [ ____Emacs ] [ ____Make ] [ ____Perl ] [ ____Python ] [ ____OpenGL ] [ ____C# ] [ ____StyleSheet ] [ ____C++ ] [ ____Winsock ] [ ____Thread ] [ ____VisualStudio ] [ ____C ] [ ____Win32API ] [ ____Lua ] [ ____PhotoShop ]
ヘッダ検索
___

■ Network



            Console.WriteLine( System.Net.Dns.GetHostName() );

            // IP を取得

            System.Net.IPHostEntry h =  System.Net.Dns.GetHostEntry("pc");

            Console.WriteLine(System.Net.Dns.GetHostName());
            Console.WriteLine( h.AddressList[0].ToString() );            
___

■ TcpClient

    using System.Net.Sockets;


            System.Net.Sockets.TcpClient c = new System.Net.Sockets.TcpClient();
            try
            {
                c.Connect("pc", 8080);
                NetworkStream s = c.GetStream();
                byte[] b = Encoding.ASCII.GetBytes( "GET / HTTP/1.0\r\n\r\n" );
                s.Write( b, 0, b.Length );

                byte[] rb = new byte[8 * 1024];
                s.Read(rb, 0, rb.Length);
                Console.WriteLine( Encoding.ASCII.GetString( rb ) );

                c.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine("aaa");
            }
___

■ TcpListener

DESC TCPサーバ側の機能を提供するクラス。
    using System.Net.Sockets;
    using System.Net;

            // port番号 2000 でサーバーを開始する。
            TcpListener srv = new TcpListener( IPAddress.Any, 2000 );
            srv.Start();

            // クライアントの接続まちをする。
            TcpClient c = srv.AcceptTcpClient();

            // 接続できたら、相手の言ったことをstdoutへ出力する。
            NetworkStream st = c.GetStream();
            byte[] buf = new byte[1024];
            st.Read(buf, 0, 1024);

            string ret = Encoding.ASCII.GetString( buf, 0, 1024 );
            Console.WriteLine( "client msg = {0}", ret );


            // サーバをとめる。
            srv.Stop();
繰り返し対応をする。
        static private void ClientHandler(TcpClient c)
        {
            byte[] buf = new byte[1024];
            NetworkStream st = c.GetStream();

            // 相手が接続を切ると 0 が返る。
            while ( st.Read(buf, 0, 1024) != 0 ) {

                string ret = Encoding.ASCII.GetString( buf, 0, 1024 );
                Console.WriteLine( "client msg = {0}", ret );
                
            }
        }
上の処理では一人しか相手をできないので、 スレッドプールへ処理を投げる。
        {
            while (true)
            {  
                // メイン処理では客まちだけをして
                TcpClient c = srv.AcceptTcpClient();

                // 相手をするのは従業員にまかせる。
                ThreadPool.QueueUserWorkItem(new WaitCallback(ClientHandler), c);
            }            
        }



        static private void ClientHandler(Object o)
        {
            TcpClient c = ( TcpClient )o;
            byte[] buf = new byte[1024];
            NetworkStream st = c.GetStream();

            // 相手が接続を切ると 0 が返る。
            while ( st.Read(buf, 0, 1024) != 0 ) {

                string ret = Encoding.ASCII.GetString( buf, 0, 1024 );
                Console.WriteLine( "client msg = {0}", ret );
                
            }
        }

















NINJAIDX 10