You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tcpipSocket/Chat/Client/LoginForm.cs

62 lines
1.4 KiB

2 years ago
using Core;
using System.Net.Sockets;
2 years ago
namespace Client
{
public partial class LoginForm : Form
{
public LoginForm()
{
InitializeComponent();
2 years ago
InitInstance();
2 years ago
}
2 years ago
private void InitInstance()
2 years ago
{
2 years ago
Singleton.Instance.LoginResponsed += LoginResponsed;
FormClosing += LoginForm_FormClosing;
}
private void LoginForm_FormClosing(object? sender, FormClosingEventArgs e)
{
Singleton.Instance.LoginResponsed -= LoginResponsed;
}
private async void btnLogin_Click(object sender, EventArgs e)
{
string id = tbxId.Text;
string nickname = tbxNickname.Text;
if (string.IsNullOrEmpty(id) || string.IsNullOrEmpty(nickname))
2 years ago
{
MessageBox.Show("Please input ID and Nickname.");
return;
}
2 years ago
await Singleton.Instance.ConnectAsync("127.0.0.1", 20000);
2 years ago
2 years ago
Singleton.Instance.Id = id;
Singleton.Instance.Nickname = nickname;
LoginRequestPacket packet = new LoginRequestPacket(id, nickname);
await Singleton.Instance.SendAsync(packet.Serialize(), SocketFlags.None);
}
private void LoginResponsed(object? sender, EventArgs e)
{
if (sender == null)
return;
LoginResponsePacket packet = (LoginResponsePacket)sender;
MessageBox.Show(packet.Code.ToString());
if (packet.Code != StatusCode.Success)
{
RoomListForm roomListForm = new RoomListForm();
roomListForm.ShowDialog();
}
else
{
Singleton.Instance.Socket.Shutdown(SocketShutdown.Send);
}
2 years ago
}
}
}