Mainly cosmetic changes.
This commit is contained in:
+6
-39
@@ -20,10 +20,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.IO;
|
|
||||||
using System.Xml;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Sockets;
|
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
||||||
namespace pokerth_console
|
namespace pokerth_console
|
||||||
@@ -32,44 +28,15 @@ namespace pokerth_console
|
|||||||
{
|
{
|
||||||
static int Main(string[] args)
|
static int Main(string[] args)
|
||||||
{
|
{
|
||||||
// Retrieve server list.
|
Settings settings = new Settings();
|
||||||
WebClient webcl = new WebClient();
|
|
||||||
string tmpFilePath = Path.GetTempPath();
|
|
||||||
string tmpZipFileName = tmpFilePath + "pokerth_serverlist.xml.z";
|
|
||||||
string tmpXmlFileName = tmpFilePath + "pokerth_serverlist.xml";
|
|
||||||
webcl.DownloadFile("http://pokerth.net/serverlist.xml.z", tmpZipFileName);
|
|
||||||
ZlibHelper.UncompressFile(tmpZipFileName, tmpXmlFileName);
|
|
||||||
FileStream f = new FileStream(tmpXmlFileName, FileMode.Open, FileAccess.Read);
|
|
||||||
XmlReader x = XmlReader.Create(f);
|
|
||||||
x.Read();
|
|
||||||
x.ReadStartElement("ServerList");
|
|
||||||
x.ReadStartElement("Server");
|
|
||||||
x.ReadToFollowing("IPv4Address");
|
|
||||||
x.MoveToFirstAttribute();
|
|
||||||
string ipAddress = x.Value;
|
|
||||||
x.ReadToFollowing("Port");
|
|
||||||
x.MoveToFirstAttribute();
|
|
||||||
int port = Convert.ToInt32(x.Value);
|
|
||||||
x.Close();
|
|
||||||
f.Close();
|
|
||||||
File.Delete(tmpZipFileName);
|
|
||||||
File.Delete(tmpXmlFileName);
|
|
||||||
// Connect to the server.
|
|
||||||
TcpClient client = new TcpClient(ipAddress, port);
|
|
||||||
NetPacket test = new NetPacketInit();
|
|
||||||
test.Properties.Add(NetPacket.PropertyType.PropRequestedVersionMajor, "4");
|
|
||||||
test.Properties.Add(NetPacket.PropertyType.PropRequestedVersionMinor, "2");
|
|
||||||
test.Properties.Add(NetPacket.PropertyType.PropPlayerName, "Loto");
|
|
||||||
test.Properties.Add(NetPacket.PropertyType.PropPlayerPassword, "");
|
|
||||||
byte[] buf = test.ToByteArray();
|
|
||||||
client.GetStream().Write(buf, 0, buf.Length);
|
|
||||||
GameInfoList list = new GameInfoList();
|
GameInfoList list = new GameInfoList();
|
||||||
ReceiverThread t = new ReceiverThread(client.GetStream(), list);
|
Client client = new Client(settings);
|
||||||
ReceiverThread.Run(t);
|
client.Connect();
|
||||||
|
client.Start(list);
|
||||||
Thread.Sleep(5000);
|
Thread.Sleep(5000);
|
||||||
t.SetTerminateFlag();
|
client.SetTerminateFlag();
|
||||||
Console.Write(list.ToString());
|
Console.Write(list.ToString());
|
||||||
t.WaitTermination();
|
client.WaitTermination();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace pokerth_console
|
||||||
|
{
|
||||||
|
class ServerSettings
|
||||||
|
{
|
||||||
|
public ServerSettings()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public string IPv4Address
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return m_ipv4Address;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
m_ipv4Address = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string IPv6Address
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return m_ipv6Address;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
m_ipv6Address = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Port
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return m_port;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
m_port = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private string m_ipv4Address = "";
|
||||||
|
private string m_ipv6Address = "";
|
||||||
|
private int m_port = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.Xml;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace pokerth_console
|
||||||
|
{
|
||||||
|
class Settings
|
||||||
|
{
|
||||||
|
private const string ServerListUrl = "http://pokerth.net/serverlist.xml.z";
|
||||||
|
|
||||||
|
public Settings()
|
||||||
|
{
|
||||||
|
m_serverSettings = RetrieveServerSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServerSettings ServerSettings
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return m_serverSettings;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected ServerSettings RetrieveServerSettings()
|
||||||
|
{
|
||||||
|
// Retrieve server list.
|
||||||
|
string tmpFile = DownloadXmlServerList();
|
||||||
|
// Parse Xml data;
|
||||||
|
ServerSettings settings = ParseServerSettings(tmpFile);
|
||||||
|
File.Delete(tmpFile);
|
||||||
|
return settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected string DownloadXmlServerList()
|
||||||
|
{
|
||||||
|
// Download the server list from the official site.
|
||||||
|
WebClient webcl = new WebClient();
|
||||||
|
string tmpFilePath = Path.GetTempPath();
|
||||||
|
string tmpZipFile = tmpFilePath + "pokerth_serverlist.xml.z";
|
||||||
|
string tmpXmlFile = tmpFilePath + "pokerth_serverlist.xml";
|
||||||
|
webcl.DownloadFile(ServerListUrl, tmpZipFile);
|
||||||
|
// The list is zlib compressed - uncompress.
|
||||||
|
ZlibHelper.UncompressFile(tmpZipFile, tmpXmlFile);
|
||||||
|
File.Delete(tmpZipFile);
|
||||||
|
|
||||||
|
return tmpXmlFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected ServerSettings ParseServerSettings(string file)
|
||||||
|
{
|
||||||
|
ServerSettings settings = new ServerSettings();
|
||||||
|
FileStream f = new FileStream(file, FileMode.Open, FileAccess.Read);
|
||||||
|
XmlReader x = XmlReader.Create(f);
|
||||||
|
x.Read();
|
||||||
|
x.ReadStartElement("ServerList");
|
||||||
|
x.ReadStartElement("Server");
|
||||||
|
x.ReadToFollowing("IPv4Address");
|
||||||
|
x.MoveToFirstAttribute();
|
||||||
|
settings.IPv4Address = x.Value;
|
||||||
|
x.ReadToFollowing("IPv6Address");
|
||||||
|
x.MoveToFirstAttribute();
|
||||||
|
settings.IPv6Address = x.Value;
|
||||||
|
x.ReadToFollowing("Port");
|
||||||
|
x.MoveToFirstAttribute();
|
||||||
|
settings.Port = Convert.ToInt32(x.Value);
|
||||||
|
x.Close();
|
||||||
|
f.Close();
|
||||||
|
|
||||||
|
return settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ServerSettings m_serverSettings;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
|
||||||
|
namespace pokerth_console
|
||||||
|
{
|
||||||
|
class Client
|
||||||
|
{
|
||||||
|
public Client(Settings settings)
|
||||||
|
{
|
||||||
|
m_tcpClient = new TcpClient();
|
||||||
|
m_settings = settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Connect()
|
||||||
|
{
|
||||||
|
// Connect to the server.
|
||||||
|
// Try IPv6 first.
|
||||||
|
IPAddress[] addresses = new IPAddress[2];
|
||||||
|
addresses[0] = IPAddress.Parse(m_settings.ServerSettings.IPv6Address);
|
||||||
|
addresses[1] = IPAddress.Parse(m_settings.ServerSettings.IPv4Address);
|
||||||
|
m_tcpClient.Connect(addresses, m_settings.ServerSettings.Port);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Start(GameInfoList list)
|
||||||
|
{
|
||||||
|
StartReceiveThread(list);
|
||||||
|
SendInit();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetTerminateFlag()
|
||||||
|
{
|
||||||
|
m_receiver.SetTerminateFlag();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void WaitTermination()
|
||||||
|
{
|
||||||
|
m_receiver.WaitTermination();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void StartReceiveThread(GameInfoList list)
|
||||||
|
{
|
||||||
|
m_receiver = new ReceiverThread(m_tcpClient.GetStream(), list);
|
||||||
|
m_receiver.Run();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void SendInit()
|
||||||
|
{
|
||||||
|
NetPacket test = new NetPacketInit();
|
||||||
|
test.Properties.Add(NetPacket.PropertyType.PropRequestedVersionMajor, "4");
|
||||||
|
test.Properties.Add(NetPacket.PropertyType.PropRequestedVersionMinor, "2");
|
||||||
|
test.Properties.Add(NetPacket.PropertyType.PropPlayerName, "Loto");
|
||||||
|
test.Properties.Add(NetPacket.PropertyType.PropPlayerPassword, "");
|
||||||
|
byte[] buf = test.ToByteArray();
|
||||||
|
m_tcpClient.GetStream().Write(buf, 0, buf.Length);
|
||||||
|
}
|
||||||
|
|
||||||
|
private TcpClient m_tcpClient;
|
||||||
|
private ReceiverThread m_receiver;
|
||||||
|
private Settings m_settings;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -38,16 +38,15 @@ namespace pokerth_console
|
|||||||
m_terminateFlag = false;
|
m_terminateFlag = false;
|
||||||
m_terminateFlagMutex = new System.Object();
|
m_terminateFlagMutex = new System.Object();
|
||||||
m_recStream = stream;
|
m_recStream = stream;
|
||||||
m_recStream.ReadTimeout = 50;
|
|
||||||
m_recBuf = new byte[8192];
|
m_recBuf = new byte[8192];
|
||||||
m_recBufOffset = 0;
|
m_recBufOffset = 0;
|
||||||
m_packetList = new List<NetPacket>();
|
m_packetList = new List<NetPacket>();
|
||||||
m_lobbyGameInfoList = list;
|
m_lobbyGameInfoList = list;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Run(ReceiverThread me)
|
public void Run()
|
||||||
{
|
{
|
||||||
me.m_recThread.Start(me);
|
m_recThread.Start(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static void ThreadProc(object obj)
|
protected static void ThreadProc(object obj)
|
||||||
@@ -91,6 +90,7 @@ namespace pokerth_console
|
|||||||
{
|
{
|
||||||
if (m_recStream.DataAvailable)
|
if (m_recStream.DataAvailable)
|
||||||
m_recBufOffset += m_recStream.Read(m_recBuf, m_recBufOffset, m_recBuf.Length - m_recBufOffset);
|
m_recBufOffset += m_recStream.Read(m_recBuf, m_recBufOffset, m_recBuf.Length - m_recBufOffset);
|
||||||
|
else
|
||||||
Thread.Sleep(15);
|
Thread.Sleep(15);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user