SendTo() 공개 메소드

public SendTo ( Array data, int offset, int size, FlyingWormConsole3.LiteNetLib.NetEndPoint remoteEndPoint, int &errorCode ) : int
data Array
offset int
size int
remoteEndPoint FlyingWormConsole3.LiteNetLib.NetEndPoint
errorCode int
리턴 int
        internal bool SendRaw(byte[] message, int start, int length, NetEndPoint remoteEndPoint)
        {
            if (!IsRunning)
            {
                return(false);
            }

            int  errorCode = 0;
            bool result    = _socket.SendTo(message, start, length, remoteEndPoint, ref errorCode) > 0;

            //10040 message to long... need to check
            //10065 no route to host
            if (errorCode != 0 && errorCode != 10040 && errorCode != 10065)
            {
                //Send error
                NetPeer fromPeer;
                if (_peers.TryGetValue(remoteEndPoint, out fromPeer))
                {
                    DisconnectPeer(fromPeer, DisconnectReason.SocketSendError, errorCode, false, null, 0, 0);
                }
                var netEvent = CreateEvent(NetEventType.Error);
                netEvent.RemoteEndPoint = remoteEndPoint;
                netEvent.AdditionalData = errorCode;
                EnqueueEvent(netEvent);
                return(false);
            }
            if (errorCode == 10040)
            {
                NetUtils.DebugWrite(ConsoleColor.Red, "[SRD] 10040, datalen: {0}", length);
                return(false);
            }
#if STATS_ENABLED
            PacketsSent++;
            BytesSent += (uint)length;
#endif

            return(result);
        }
예제 #2
0
        public void GetNetworkTime()
        {
            if (SyncedTime != null)
            {
                return;
            }

            var ntpData = new byte[48];

            //LeapIndicator = 0 (no warning)
            //VersionNum = 3
            //Mode = 3 (Client Mode)
            ntpData[0] = 0x1B;

            //send
            int errorCode = 0;

            _socket.SendTo(ntpData, 0, ntpData.Length, _ntpEndPoint, ref errorCode);

            if (errorCode == 0)
            {
                _waiter.WaitOne(1000);
            }
        }