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!

Server Log in Trouble

Tuff

Traveler
I have just recently made a shard and it is public and some people can connect to it and some cant, any ideas on why some people cannot log in? These people are saying they get stuck on connection screen. Please reply and help me out here. Thanks!
 

Soteric

Knight
Yes. Start the server, go to http://canyouseeme.org and check port 2593. If it's blocked then port forwarding is not correct. If it's okay check ServerList.cs. Address property should point to your external IP.
 

_Epila_

Sorceror
If they can connect but not go after the server selection screen, the problem is most likely to be in your ServerList.cs, the server is sending the wrong address to the client


RunUO can detect your external IP automatically (no needs to change your ServerList.cs every time your IP changes), but there is a Windows7 related issue, it thinks the IP range 169.254.* is external, but it is the Automatic Private IP Addressing. I've reported this some time ago :(
 

Tuff

Traveler
I Honestly cannot figure out what it is then. It all looked good to me. I will post my severlist see what you think
 

Tuff

Traveler
using System;
using System.IO;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using Server;
using Server.Network;

namespace Server.Misc
{
public class ServerList
{
/*
* The default setting for Address, a value of 'null', will use your local IP address. If all of your local IP addresses
* are private network addresses and AutoDetect is 'true' then RunUO will attempt to discover your public IP address
* for you automatically.
*
* If you do not plan on allowing clients outside of your LAN to connect, you can set AutoDetect to 'false' and leave
* Address set to 'null'.
*
* If your public IP address cannot be determined, you must change the value of Address to your public IP address
* manually to allow clients outside of your LAN to connect to your server. Address can be either an IP address or
* a hostname that will be resolved when RunUO starts.
*
* If you want players outside your LAN to be able to connect to your server and you are behind a router, you must also
* forward TCP port 2593 to your private IP address. The procedure for doing this varies by manufacturer but generally
* involves configuration of the router through your web browser.
*
* ServerList will direct connecting clients depending on both the address they are connecting from and the address and
* port they are connecting to. If it is determined that both ends of a connection are private IP addresses, ServerList
* will direct the client to the local private IP address. If a client is connecting to a local public IP address, they
* will be directed to whichever address and port they initially connected to. This allows multihomed servers to function
* properly and fully supports listening on multiple ports. If a client with a public IP address is connecting to a
* locally private address, the server will direct the client to either the AutoDetected IP address or the manually entered
* IP address or hostname, whichever is applicable. Loopback clients will be directed to loopback.
*
* If you would like to listen on additional ports (i.e. 22, 23, 80, for clients behind highly restrictive egress
* firewalls) or specific IP adddresses you can do so by modifying the file SocketOptions.cs found in this directory.
*/

public static readonly string Address = "98.215.152.88";
public static readonly string ServerName = "KR Rises";

public static readonly bool AutoDetect = true;

public static void Initialize()
{
if ( Address == null ) {
if ( AutoDetect )
AutoDetection();
}
else {
Resolve( Address, out m_PublicAddress );
}

EventSink.ServerList += new ServerListEventHandler( EventSink_ServerList );
}

private static IPAddress m_PublicAddress;

private static void EventSink_ServerList( ServerListEventArgs e )
{
try
{
NetState ns = e.State;
Socket s = ns.Socket;

IPEndPoint ipep = (IPEndPoint)s.LocalEndPoint;

IPAddress localAddress = ipep.Address;
int localPort = ipep.Port;

if ( IsPrivateNetwork( localAddress ) ) {
ipep = (IPEndPoint)s.RemoteEndPoint;
if ( !IsPrivateNetwork( ipep.Address ) && m_PublicAddress != null )
localAddress = m_PublicAddress;
}

e.AddServer( ServerName, new IPEndPoint( localAddress, localPort ) );
}
catch
{
e.Rejected = true;
}
}

private static void AutoDetection()
{
if ( !HasPublicIPAddress() ) {
Console.Write( "ServerList: Auto-detecting public IP address..." );
m_PublicAddress = FindPublicAddress();

if ( m_PublicAddress != null )
Console.WriteLine( "done ({0})", m_PublicAddress.ToString() );
else
Console.WriteLine( "failed" );
}
}

private static void Resolve( string addr, out IPAddress outValue )
{
if ( IPAddress.TryParse( addr, out outValue ) )
return;

try {
IPHostEntry iphe = Dns.GetHostEntry( addr );

if ( iphe.AddressList.Length > 0 )
outValue = iphe.AddressList[iphe.AddressList.Length - 1];
}
catch {
}
}

private static bool HasPublicIPAddress()
{
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();

foreach ( NetworkInterface adapter in adapters ) {
 

_Epila_

Sorceror
Your NetState.cs seems ok, you set your IP correctly (if your IP is random, check again). The problem may be in your router if you have one or in your firewall settings. Do what Solteric said, it will check if your server is visible to the internet

PS: Post the scripts using the CODE tags, it will be more user friendly :)
 
Top