76 lines
2.2 KiB
C#
76 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net.Sockets;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using YapperClient.Net.IO;
|
|
|
|
namespace YapperClient.Net
|
|
{
|
|
class Server
|
|
{
|
|
TcpClient _client;
|
|
public PacketReader PacketReader;
|
|
|
|
public event Action connectedEvent;
|
|
public event Action msgReceivedEvent;
|
|
public event Action userDisconnectedEvent;
|
|
public Server() {
|
|
_client = new TcpClient();
|
|
}
|
|
|
|
public void ConnectToServer(string userName)
|
|
{
|
|
if (!_client.Connected)
|
|
{
|
|
_client.Connect("127.0.0.1", 7891);
|
|
PacketReader = new PacketReader(_client.GetStream());
|
|
|
|
if (!string.IsNullOrEmpty(userName))
|
|
{
|
|
var connectPacket = new PacketBuilder();
|
|
connectPacket.WriteOpCode(0);
|
|
connectPacket.WriteString(userName);
|
|
_client.Client.Send(connectPacket.GetPacketBytes());
|
|
}
|
|
|
|
ReadPackets();
|
|
}
|
|
}
|
|
|
|
private void ReadPackets()
|
|
{
|
|
Task.Run(() => {
|
|
while (true)
|
|
{
|
|
var opcode = PacketReader.ReadByte();
|
|
switch (opcode)
|
|
{
|
|
case 1:
|
|
connectedEvent?.Invoke();
|
|
break;
|
|
case 5:
|
|
msgReceivedEvent?.Invoke();
|
|
break;
|
|
case 10:
|
|
userDisconnectedEvent?.Invoke();
|
|
break;
|
|
default:
|
|
Console.WriteLine("ah yes ...");
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
public void SendMessageToServer(string message)
|
|
{
|
|
var messagePacket = new PacketBuilder();
|
|
messagePacket.WriteOpCode(5);
|
|
messagePacket.WriteString(message);
|
|
_client.Client.Send(messagePacket.GetPacketBytes());
|
|
}
|
|
}
|
|
}
|