示例#1
0
文件: Client.cs 项目: kingling/sgs
 /// <summary>
 /// 
 /// </summary>
 /// <param name="isReplay">Set true if this is client is connected to a replayFile</param>
 /// <param name="replayStream"></param>
 /// <exception cref="System.ArgumentOutOfRangeException" />
 /// <exception cref="System.Net.Sockets.SocketException" />
 public void Start(Stream recordStream = null, LoginToken? token = null)
 {
     IPEndPoint ep = new IPEndPoint(IPAddress.Parse(IpString), PortNumber);
     TcpClient client = new TcpClient();
     client.Connect(ep);
     NetworkStream stream = client.GetStream();
     receiver = new ItemReceiver(stream, recordStream);
     sender = new ItemSender(stream);
     if (token != null)
     {
         sender.Send((LoginToken)token);
         sender.Flush();
     }
     commId = 0;
 }
示例#2
0
文件: Client.cs 项目: kingling/sgs
 public void StartReplay(Stream replayStream)
 {
     receiver = new ItemReceiver(replayStream);
     this.replayStream = replayStream;
     sender = new ItemSender(Stream.Null);
     commId = 0;
     ReplayController = new Utils.ReplayController();
     ReplayController.EvenDelays = true;
 }
示例#3
0
文件: Client.cs 项目: maplegh/sgs
 /// <summary>
 /// 
 /// </summary>
 /// <exception cref="System.ArgumentOutOfRangeException" />
 /// <exception cref="System.Net.Sockets.SocketException" />
 public void Start(bool isReplay = false, Stream replayStream = null)
 {
     this.isReplay = isReplay;
     replayFile = replayStream;
     if (isReplay)
     {
         receiver = new ItemReceiver(replayFile);
         sender = new ItemSender(Stream.Null);
     }
     else
     {
         IPEndPoint ep = new IPEndPoint(IPAddress.Parse(IpString), PortNumber);
         TcpClient client = new TcpClient();
         client.Connect(ep);
         NetworkStream stream = client.GetStream();
         receiver = new ItemReceiver(stream, replayFile);
         sender = new ItemSender(stream);
     }
     commId = 0;
 }
示例#4
0
文件: Client.cs 项目: pxoylngx/sgs
 public void StartReplay(Stream replayStream)
 {
     receiver = new ItemReceiver(replayStream);
     sender = new ItemSender(Stream.Null);
     commId = 0;
 }
示例#5
0
文件: Client.cs 项目: pxoylngx/sgs
 /// <summary>
 /// 
 /// </summary>
 /// <param name="isReplay">Set true if this is client is connected to a replayFile</param>
 /// <param name="replayStream"></param>
 /// <exception cref="System.ArgumentOutOfRangeException" />
 /// <exception cref="System.Net.Sockets.SocketException" />
 public void Start(Stream recordStream = null)
 {
     IPEndPoint ep = new IPEndPoint(IPAddress.Parse(IpString), PortNumber);
     TcpClient client = new TcpClient();
     client.Connect(ep);
     NetworkStream stream = client.GetStream();
     receiver = new ItemReceiver(stream, recordStream);
     sender = new ItemSender(stream);
     commId = 0;
 }
示例#6
0
文件: Server.cs 项目: pxoylngx/sgs
 private void ServerThread(ServerHandler handler)
 {
     ItemReceiver r = new ItemReceiver(handler.stream);
     game.RegisterCurrentThread();
     while (true)
     {
         object o;
         do
         {
             o = r.Receive();
             if (o == null) return;
         } while (HandleInterrupt(o));
         handler.semAccess.WaitOne();
         handler.queueIn.Enqueue(o);
         handler.semAccess.Release(1);
         handler.semIn.Release(1);
     }
 }
示例#7
0
文件: Server.cs 项目: maplegh/sgs
 private void ServerThread(Stream stream, Semaphore semWake, Semaphore semAccess, Queue<object> queueIn)
 {
     ItemReceiver r = new ItemReceiver(stream);
     game.RegisterCurrentThread();
     while (true)
     {
         object o;
         do
         {
             o = r.Receive();
             if (o is int)
             {
                 Trace.TraceInformation("{0} Received a {1}", Thread.CurrentThread.Name, (int)o);
             }
             {
                 Trace.TraceInformation("{0} Received a {1}", Thread.CurrentThread.Name, o.GetType().Name);
             }
         } while (HandleInterrupt(o));
         semAccess.WaitOne();
         queueIn.Enqueue(o);
         semAccess.Release(1);
         semWake.Release(1);
     }
 }