ChatX/chatclient/MainWindow.xaml.cs

98 lines
2.7 KiB
C#

using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Net.Sockets;
using System.Net;
using System.IO;
using System;
using System.Security.Policy;
using log4net;
using log4net.Config;
using System.Text.Json;
using chatapi;
using System.Diagnostics;
using System.Windows.Interop;
using ControlzEx.Standard;
[assembly: XmlConfigurator(ConfigFile = "config/log4net.config", Watch = true)]
namespace chatclient
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
LoginWindow Login = new();
static string? receive;
public static int user_id = 0;
public static string? LoginMsg = "123";
private static readonly ILog log = LogManager.GetLogger(typeof(MainWindow));
public static Socket? Client;
public MainWindow()
{
InitializeComponent();
log.Info("Hello World!");
this.Hide();
Client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
log.Info("连接服务器 127.0.0.1:5555 ");
Client.Connect("127.0.0.1", 5555);
}
catch (Exception ex)
{
Client.Close();
log.Error(ex);
}
Login.Show();
Thread th = new Thread(Receive);
th.Start();
}
static void Receive()
{
byte[] buffer = new byte[1024];
try
{
while (true)
{
int num = Client!.Receive(buffer);
if (num == 0) break;
if (Client.Poll(100, SelectMode.SelectRead) && Client.Available == 0 || !Client.Connected)
{
log.Error("连接已断开");
break;
}
receive = Encoding.UTF8.GetString(buffer, 0, num);
response(receive);
}
}
catch (Exception ex) {
log.Error(ex);
}
finally
{
Client?.Close();
}
}
static void response(string msg)
{
LoginData data = JsonSerializer.Deserialize<LoginData>(msg)!;
if (data.success) {
}
else {
//LoginWindow.Instance.LoginMsg.Text = msg;
}
}
}
}