internal bool SendRaw(byte[] message, int start, int length, NetEndPoint remoteEndPoint) { if (!IsRunning) { return(false); } var errorCode = 0; var 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); }
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 var errorCode = 0; _socket.SendTo(ntpData, 0, ntpData.Length, _ntpEndPoint, ref errorCode); if (errorCode == 0) { _waiter.WaitOne(1000); } }