RunUo.Korean.Forum RunUo.Korean.Forum
RunUo(·±À¯¿À)¿¡ °üÇÑ Çѱ¹ Æ÷·³ »çÀÌÆ®
 

kjss ´Ô ¿©±â Âü°í !!
Click here to go to the original topic

 
       RunUo.Korean.Forum -> About RunUo
ÀÌÀü ±Û :: ´ÙÀ½ ±Û  
±Û ¾´ÀÌ ¸Þ¼¼Áö ³»¿ë
kwy3420



°¡ÀÔÀÏ: 2004³â 08¿ù 15ÀÏ
°Ô½Ã¹°: 126

±Û ÀÛ¼º½Ã°£ : 2004-11-12 ±Ý 7:33 pm    Á¦¸ñ: kjss ´Ô ¿©±â Âü°í !!  

using System;
using System.Net;
using System.Net.Sockets;
using Server;
using Server.Network;

namespace Server.Misc
{
public class ServerList
{
/* Address:
*
* The default setting, a value of 'null', will attempt to detect your IP address automatically:
* private const string Address = null;
*
* This detection, however, does not work for servers behind routers. If you're running behind a router, put in your IP:
* private const string Address = "12.34.56.78";
*
* If you need to resolve a DNS host name, you can do that too:
* private const string Address = "shard.host.com";
*/

public const string Address = null;

public const string ServerName = "ShadowAgeOf";

public static void Initialize()
{
Listener.Port = 2593;

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;
}
}
}








¿©±â¼­ À߸ø µÈ°Ô ÀÖ³ª¿ä... »¡¸® ´äº¯Á»...
¸Ç À§·Î °¡±â  
 
       RunUo.Korean.Forum -> About RunUo
ÇöÀçÆäÀÌÁö : 1/1


Powered by phpBB Search Engine Indexer
Powered by phpBB © 2001, 2002 phpBB Group