//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(); }
//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); }
//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); }
//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(); }