RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

trying to connect to the public

Twlizer

Sorceror
Send me you WAN address again ill give it a shot..

Also Being your Behind two NATS I would almost guarantee it has to be the local Gateway of the Second router.
 

KillerBeeZ

Knight
we will have to set up a time to do this. I generally keep the server open to the LAN so my brother and mom can play. If I set it up for the public, they cannot log on
 

wlrdwawoolard

Sorceror
im having the same problem killer beez your no alone i do think it has to do with the serverlist.cs i tried mrfixit and the original and nothing seems to work
 

KillerBeeZ

Knight
in my case I don't think it's the serverlist.cs... I think it is my isp and some new way to block the server somehow
 

Twlizer

Sorceror
You can always change sockets.cs to port 80 or port 110 for testing to see if it is a ISP issue.

Be sure to forward those ports and close your Email and your web browser if you try that.

The ISP cant block those two ports for sure because they are your IE ports and Email.

I would only use those two ports for testing and not a solution to the issue. If they connect on those ports you can almost guarantee its a ISP blocking you.
 

KillerBeeZ

Knight
I have been checking the settings on the router, firewall, scripts and everything me or anyone else can think of for years
 

boba

Sorceror
Code:
using System;
using System.IO;
using Microsoft.Win32;
using Server;
 
namespace Server.Misc
{
    public class DataPath
    {
        /* If you have not installed Ultima Online,
        * or wish the server to use a separate set of datafiles,
        * change the 'CustomPath' value, example:
        *
        * private const string CustomPath = @"C:\Program Files\Ultima Online";
        */
        private static string CustomPath = null;
 
        /* The following is a list of files which a required for proper execution:
        *
        * Multi.idx
        * Multi.mul
        * VerData.mul
        * TileData.mul
        * Map*.mul
        * StaIdx*.mul
        * Statics*.mul
        * MapDif*.mul
        * MapDifL*.mul
        * StaDif*.mul
        * StaDifL*.mul
        * StaDifI*.mul
        */
 
        public static void Configure()
        {
            //AddPath( CustomPath );
            AddPath( GetPath( @"Origin Worlds Online\Ultima Online\1.0", "ExePath" ) );
            AddPath( GetPath( @"Origin Worlds Online\Ultima Online Third Dawn\1.0", "ExePath" ) ); //These refer to 2D & 3D, not the Third Dawn expansion
            AddPath( GetPath( @"Origin Worlds Online\Ultima Online\KR Legacy Beta", "ExePath" ) ); //After KR, This is the new registry key for the 2D client
            AddPath( GetPath( @"Electronic Arts\EA Games\Ultima Online Stygian Abyss Classic", "InstallDir" ) );
            AddPath( GetPath( @"Electronic Arts\EA Games\Ultima Online Classic", "InstallDir" ) );
 
            if ( Core.DataDirectories.Count == 0 && !Core.Service )
            {
                Console.WriteLine( "Enter the Ultima Online directory:" );
                Console.Write( "> " );
 
                Core.DataDirectories.Add( Console.ReadLine() );
            }
        }
 
        private static void AddPath( string path )
        {
            if ( path != null && path.Length > 0 )
                Core.DataDirectories.Add( path );
        }
 
        private static string GetPath( string subName, string keyName )
        {
            try
            {
                string keyString;
 
                if( Core.Is64Bit )
                    keyString = @"SOFTWARE\Wow6432Node\{0}";
                else
                    keyString = @"SOFTWARE\{0}";
 
                using( RegistryKey key = Registry.LocalMachine.OpenSubKey( String.Format( keyString, subName ) ) )
                {
                    if( key == null )
                        return null;
 
                    string v = key.GetValue( keyName ) as string;
 
                    if( String.IsNullOrEmpty( v ) )
                        return null;
 
                    if ( keyName == "InstallDir" )
                        v = v + @"\";
 
                    v = Path.GetDirectoryName( v );
 
                    if ( String.IsNullOrEmpty( v ) )
                        return null;
 
                    return v;
                }
            }
            catch
            {
                return null;
            }
        }
    }
}
Code:
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using Server;
using Server.Misc;
using Server.Network;
 
namespace Server
{
    public class SocketOptions
    {
        private const bool NagleEnabled = false; // Should the Nagle algorithm be enabled? This may reduce performance
        private const int CoalesceBufferSize = 512; // MSS that the core will use when buffering packets
        //private const int PooledSockets = 32; // The number of sockets to initially pool. Ideal value is expected client count.
 
        private static IPEndPoint[] m_ListenerEndPoints = new IPEndPoint[] {
            new IPEndPoint( IPAddress.Any, 5555 ), // Default: Listen on port 5555 on all IP addresses
            new IPEndPoint( IPAddress.Any, 2599), // Default: Listen on port 2593 on all IP addresses
 
            // Examples:
            // new IPEndPoint( IPAddress.Any, 80 ), // Listen on port 80 on all IP addresses
            // new IPEndPoint( IPAddress.Parse( "1.2.3.4" ), 2593 ), // Listen on port 2593 on IP address 1.2.3.4
        };
 
        public static void Initialize()
        {
            SendQueue.CoalesceBufferSize = CoalesceBufferSize;
            //SocketPool.InitialCapacity = PooledSockets;
 
            EventSink.SocketConnect += new SocketConnectEventHandler( EventSink_SocketConnect );
 
            Listener.EndPoints = m_ListenerEndPoints;
        }
 
        private static void EventSink_SocketConnect( SocketConnectEventArgs e )
        {
            if ( e.AllowConnection && !NagleEnabled )
                e.Socket.SetSocketOption( SocketOptionLevel.Tcp, SocketOptionName.NoDelay, 1 ); // RunUO uses its own algorithm
        }
    }
}
in this example its 2599 because I was running two servers on one computer


socket options is basically for telling which port your clients will connect to.... Most are 2593 but you can change it to any open port you like
unless you have something else running on that port like 2594 with uoarchitect etc.

to check your port go to www.canyouseeme.org and follow the instructions you will know soon enuff if its open or not

If That is not it then you need to check your clientverification.cs to see if you disabled client kick

next if that is not it go to datapath.cs to make sure its pointed properly

all else fails Skype me at brainweed
 

KillerBeeZ

Knight
Within the network, at home I can connect on the local server with my client and my brother can connect to the server from his computer. So it is not the client or the server. The datapath is fine as everything works just fine when I connect within the LAN ... but when someone outside the LAN tries to connect, it doesn't see the server at all. I have already tried canyouseeme and the ports are open. I do not see why I would need to upgrade the server as everything is the same when it worked years ago... the only difference is that instead of Charter Cable, I'm now on Windstream ADSL ... but to be thorough I did try the latest server/client and got the same issues.
 

boba

Sorceror
ok and I'm sure you upgraded your computer since then so try this

make sure net framework 2.0 is on that system http://www.microsoft.com/en-us/download/details.aspx?id=17981

if that don't work send me a screen shot of your console screen

if your family is using 192.168.1.100 or 10.0.0.1 or 127.0.0.1 or something similar then they are connecting thru the router

also make sure what your true ip is www.whatsmyip.com this number should match the login ip on the console screen

hope this helps
 

Dian

Sorceror
You are using RunUO 1.0?
You might check a couple things.. When you have RunUO loaded, verify the Listening IP that it lists once its loaded, and making sure it does list your correct IP, not just an internal.
Also, the ServerList.cs is quite old, and may have dead links in there that are used to check your IP, for example, www.whatsmyip.com make certain whatever url's its using are still valid and working. I do remember back then (old RunUO days) there were a lot of those URL's to check IP address's that would come and go quite often, and we had to update those URL's fairly regularly.

You might want to go back to the basic's if you have no luck, and by that I mean reset your modem/router, put the server on a PC that is only behind one of these devices, not connected to a router thats connected to another router/modem that complicates the service or configuration.
 

KillerBeeZ

Knight
This is my serverlist.cs the ***.*** I assure you is my current IP as shown on http://www.whatismyip.com/ (the link you 2 have is up for sale and doesn't work)

Also, as you can see, even though the IP is uncommented, it is not shown in the console.

I did install .net 2.0 sp2 and not sure if I had it already or not.



Code:
using System;
using System.Net;
using System.Net.Sockets;
using Server;
using Server.Network;
 
namespace Server.Misc
{
    public class ServerList
    {
        //public const string Address = "192.168.123.173"; // server LAN IP
        public const string Address = "75.88.***.***";    // WAN IP
        //public const string Address = "192.168.123.254";  // Router Gateway IP
 
        public const string ServerName = "Pandora 2.0";
 
        public static void Initialize()
        {
            Listener.Port = 2593;
            //Listener.Port = 110;
 
            EventSink.ServerList += new ServerListEventHandler( EventSink_ServerList );
        }
 
        public static void EventSink_ServerList( ServerListEventArgs e )
        {
            try
            {
                IPAddress ipAddr;
 
                if ( Resolve( Address != null && !IsLocalMachine( e.State ) ? Address : Dns.GetHostName(), out ipAddr ) )
                    e.AddServer( ServerName, new IPEndPoint( ipAddr, Listener.Port ) );
                else
                    e.Rejected = true;
            }
            catch
            {
                e.Rejected = true;
            }
        }
 
        public static bool Resolve( string addr, out IPAddress outValue )
        {
            try
            {
                outValue = IPAddress.Parse( addr );
                return true;
            }
            catch
            {
                try
                {
                    IPHostEntry iphe = Dns.Resolve( addr );
 
                    if ( iphe.AddressList.Length > 0 )
                    {
                        outValue = iphe.AddressList[iphe.AddressList.Length - 1];
                        return true;
                    }
                }
                catch
                {
                }
            }
 
            outValue = IPAddress.None;
            return false;
        }
 
        private static bool IsLocalMachine( NetState state )
        {
            Socket sock = state.Socket;
 
            IPAddress theirAddress = ((IPEndPoint)sock.RemoteEndPoint).Address;
 
            if ( IPAddress.IsLoopback( theirAddress ) )
                return true;
 
            bool contains = false;
            IPHostEntry iphe = Dns.Resolve( Dns.GetHostName() );
 
            for ( int i = 0; !contains && i < iphe.AddressList.Length; ++i )
                contains = theirAddress.Equals( iphe.AddressList[i] );
 
            return contains;
        }
    }
}
 

Attachments

  • Clipboard01.jpg
    53.5 KB · Views: 5
Top