示例#1
0
        //ACCEPT
        public SockUdp(Kernel kernel, Socket s, byte[] buf, int len, IPEndPoint ep) : base(kernel)
        {
            _sockKind = SockKind.ACCEPT;

            _socket  = s;
            _recvBuf = new byte[len];
            Buffer.BlockCopy(buf, 0, _recvBuf, 0, len);

            //************************************************
            //selector/channel生成
            //************************************************

            Set(SockState.Connect, (IPEndPoint)s.LocalEndPoint, ep);


            //ACCEPTの場合は、既に受信しているので、これ以上待機する必要はない
            //    doRead(channel);
            //UDPの場合、doReadの中で、remoteAddressがセットされる
            //あとは、クローズされるまで待機

            //Ver5.8.5 Java fix
//            ThreadStart action = () =>{
//                while (SockState == SockState.Connect){
//                    Thread.Sleep(10);
//                }
//            };
//            var t = new Thread(action){IsBackground = true};
//            t.Start();
        }
示例#2
0
        //CLIENT
        public SockUdp(Kernel kernel, Ip ip, int port, Ssl ssl, byte[] buf) : base(kernel)
        {
            //SSL通信を使用する場合は、このオブジェクトがセットされる 通常の場合は、null
            _ssl = ssl;

            _sockKind = SockKind.CLIENT;

            _socket = new Socket((ip.InetKind == InetKind.V4) ? AddressFamily.InterNetwork : AddressFamily.InterNetworkV6, SocketType.Dgram, ProtocolType.Udp);

            Set(SockState.Connect, null, new IPEndPoint(ip.IPAddress, port));

            //************************************************
            //送信処理
            //************************************************
            Send(buf);
        }
示例#3
0
文件: SockUdp.cs 项目: jsakamoto/bjd5
        //CLIENT
        public SockUdp(Kernel kernel,Ip ip, int port, Ssl ssl, byte[] buf)
            : base(kernel)
        {
            //SSL通信を使用する場合は、このオブジェクトがセットされる 通常の場合は、null
            _ssl = ssl;

            _sockKind = SockKind.CLIENT;

            _socket = new Socket((ip.InetKind == InetKind.V4) ? AddressFamily.InterNetwork : AddressFamily.InterNetworkV6, SocketType.Dgram, ProtocolType.Udp);

            Set(SockState.Connect, null, new IPEndPoint(ip.IPAddress, port));

            //************************************************
            //送信処理
            //************************************************
            Send(buf);
        }
示例#4
0
文件: SockUdp.cs 项目: jsakamoto/bjd5
        //ACCEPT
        public SockUdp(Kernel kernel,Socket s, byte[] buf, int len, IPEndPoint ep)
            : base(kernel)
        {
            _sockKind = SockKind.ACCEPT;

            _socket = s;
            _recvBuf = new byte[len];
            Buffer.BlockCopy(buf,0,_recvBuf,0,len);

            //************************************************
            //selector/channel生成
            //************************************************

            Set(SockState.Connect, (IPEndPoint) s.LocalEndPoint, ep);

            //ACCEPTの場合は、既に受信しているので、これ以上待機する必要はない
            //    doRead(channel);
            //UDPの場合、doReadの中で、remoteAddressがセットされる
            //あとは、クローズされるまで待機

            //Ver5.8.5 Java fix
            //            ThreadStart action = () =>{
            //                while (SockState == SockState.Connect){
            //                    Thread.Sleep(10);
            //                }
            //            };
            //            var t = new Thread(action){IsBackground = true};
            //            t.Start();
        }