Beispiel #1
0
            public void startStop(String title, ProtocolKind protocolKind)
            {
                var bindIp = new Ip(IpKind.V4Localhost);
                const int port = 8881;
                const int listenMax = 10;
                Ssl ssl= null;

                var sockServer = new SockServer(new Kernel(),protocolKind,ssl);

                Assert.That(sockServer.SockState, Is.EqualTo(SockState.Idle));

                ThreadStart action = () =>  {
                    if (protocolKind == ProtocolKind.Tcp){
                        sockServer.Bind(bindIp, port, listenMax);
                    } else{
                        sockServer.Bind(bindIp, port);
                    }
                };

                var _t = new Thread(action) { IsBackground = true };
                _t.Start();

                while (sockServer.SockState == SockState.Idle){
                    Thread.Sleep(100);
                }
                Assert.That(sockServer.SockState, Is.EqualTo(SockState.Bind));
                sockServer.Close(); //bind()にThreadBaseのポインタを送っていないため、isLifeでブレイクできないので、selectで例外を発生させて終了する
                Assert.That(sockServer.SockState, Is.EqualTo(SockState.Error));
            }
Beispiel #2
0
            public void getLocalAddress(String title, ProtocolKind protocolKind)
            {
                var bindIp = new Ip(IpKind.V4Localhost);
                const int port = 9991;
                const int listenMax = 10;
                Ssl ssl = null;

                var sockServer = new SockServer(new Kernel(),protocolKind,ssl);

                ThreadStart action = () =>{
                    if (protocolKind == ProtocolKind.Tcp){
                        sockServer.Bind(bindIp, port, listenMax);
                    }else{
                        sockServer.Bind(bindIp, port);
                    }};

                var _t = new Thread(action) { IsBackground = true };
                _t.Start();

                while (sockServer.SockState == SockState.Idle){
                    Thread.Sleep(200);
                }

                var localAddress = sockServer.LocalAddress;
                Assert.That(localAddress.ToString(), Is.EqualTo("127.0.0.1:9991"));
                //bind()後 localAddressの取得が可能になる

                var remoteAddress = sockServer.RemoteAddress;
                Assert.IsNull(remoteAddress);
                //SockServerでは、remoteAddressは常にnullになる

                sockServer.Close();
            }
Beispiel #3
0
        //指定したアドレス・ポートで待ち受けて、接続されたら、そのソケットを返す
        //失敗した時nullが返る
        //Ver5.9.2 Java fix
        //public static SockTcp CreateConnection(Kernel kernel,Ip ip, int port,ILife iLife){
        public static SockTcp CreateConnection(Kernel kernel, Ip ip, int port, Ssl ssl, ILife iLife)
        {
            //Ver5.9.2 Java fix
            //var sockServer = new SockServer(kernel,ProtocolKind.Tcp);
            var sockServer = new SockServer(kernel, ProtocolKind.Tcp, ssl);

            if (sockServer.SockState != SockState.Error)
            {
                const int listenMax = 1;
                if (sockServer.Bind(ip, port, listenMax))
                {
                    while (iLife.IsLife())
                    {
                        var child = (SockTcp)sockServer.Select(iLife);
                        if (child == null)
                        {
                            break;
                        }
                        sockServer.Close(); //これ大丈夫?
                        return(child);
                    }
                }
            }
            sockServer.Close();
            return(null);
        }
Beispiel #4
0
 //bindが可能かどうかの確認
 public static bool IsAvailable(Kernel kernel,Ip ip, int port)
 {
     var sockServer = new SockServer(kernel,ProtocolKind.Tcp, null);
     if (sockServer.SockState != SockState.Error){
         const int listenMax = 1;
         if (sockServer.Bind(ip, port, listenMax)){
             sockServer.Close();
             return true;
         }
     }
     sockServer.Close();
     return false;
 }
Beispiel #5
0
        //bindが可能かどうかの確認
        public static bool IsAvailable(Kernel kernel, Ip ip, int port)
        {
            var sockServer = new SockServer(kernel, ProtocolKind.Tcp, null);

            if (sockServer.SockState != SockState.Error)
            {
                const int listenMax = 1;
                if (sockServer.Bind(ip, port, listenMax))
                {
                    sockServer.Close();
                    return(true);
                }
            }
            sockServer.Close();
            return(false);
        }
Beispiel #6
0
 //指定したアドレス・ポートで待ち受けて、接続されたら、そのソケットを返す
 //失敗した時nullが返る
 //Ver5.9.2 Java fix
 //public static SockTcp CreateConnection(Kernel kernel,Ip ip, int port,ILife iLife){
 public static SockTcp CreateConnection(Kernel kernel,Ip ip, int port, Ssl ssl,ILife iLife)
 {
     //Ver5.9.2 Java fix
     //var sockServer = new SockServer(kernel,ProtocolKind.Tcp);
     var sockServer = new SockServer(kernel, ProtocolKind.Tcp,ssl);
     if (sockServer.SockState != SockState.Error) {
         const int listenMax = 1;
         if (sockServer.Bind(ip, port, listenMax)){
             while (iLife.IsLife()){
                 var child = (SockTcp) sockServer.Select(iLife);
                 if (child == null){
                     break;
                 }
                 sockServer.Close(); //これ大丈夫?
                 return child;
             }
         }
     }
     sockServer.Close();
     return null;
 }