📄 clientmain.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
namespace Client
{
public partial class ClientMain : Form
{
public ClientMain()
{
InitializeComponent();
}
private IPEndPoint ServerInfo;
private Socket ClientSocket;
private Byte[] MsgBuffer;
private Byte[] MsgSend;
private void ClientMain_Load(object sender, EventArgs e)
{
this.CmdSend.Enabled = false;
this.CmdExit.Enabled = false;
ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
MsgBuffer = new Byte[65535];
MsgSend = new Byte[65535];
CheckForIllegalCrossThreadCalls = false;
Random TRand=new Random();
this.UserName.Text = "用户" + TRand.Next(10000).ToString();
}
private void CmdEnter_Click(object sender, EventArgs e)
{
ServerInfo = new IPEndPoint(IPAddress.Parse(this.ServerIP.Text), Convert.ToInt32(this.ServerPort.Text));
try
{
ClientSocket.Connect(ServerInfo);
ClientSocket.Send(Encoding.Unicode.GetBytes("用户: " + this.UserName.Text + " 进入系统!\n"));
ClientSocket.BeginReceive(MsgBuffer, 0, MsgBuffer.Length, 0, new AsyncCallback(ReceiveCallBack), null);
this.SysMsg.Text += "登录服务器成功!\n";
this.CmdSend.Enabled = true;
this.CmdEnter.Enabled = false;
this.CmdExit.Enabled = true;
}
catch
{
MessageBox.Show("登录服务器失败,请确认服务器是否正常工作!");
}
}
private void ReceiveCallBack(IAsyncResult AR)
{
try
{
int REnd = ClientSocket.EndReceive(AR);
this.RecieveMsg.AppendText(Encoding.Unicode.GetString(MsgBuffer, 0, REnd));
ClientSocket.BeginReceive(MsgBuffer, 0, MsgBuffer.Length, 0, new AsyncCallback(ReceiveCallBack), null);
}
catch
{
MessageBox.Show("已经与服务器断开连接!");
this.Close();
}
}
private void CmdSend_Click(object sender, EventArgs e)
{
MsgSend = Encoding.Unicode.GetBytes(this.UserName.Text + "说:\n" + this.SendMsg.Text + "\n");
if (ClientSocket.Connected)
{
ClientSocket.Send(MsgSend);
this.SendMsg.Text = "";
}
else
{
MessageBox.Show("当前与服务器断开连接,无法发送信息!");
}
}
private void CmdExit_Click(object sender, EventArgs e)
{
if (ClientSocket.Connected)
{
ClientSocket.Send(Encoding.Unicode.GetBytes(this.UserName.Text + "离开了房间!\n"));
ClientSocket.Shutdown(SocketShutdown.Both);
ClientSocket.Disconnect(false);
}
ClientSocket.Close();
this.CmdSend.Enabled = false;
this.CmdEnter.Enabled = true;
this.CmdExit.Enabled = false;
}
private void RecieveMsg_TextChanged(object sender, EventArgs e)
{
this.RecieveMsg.ScrollToCaret();
}
private void SendMsg_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyValue == 13)
{
e.Handled = true;
this.CmdSend_Click(this, null);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -