⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainform.cs

📁 包包版网络游戏大厅和网络桥牌系统
💻 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.Sockets;
using CommonClassLibrary;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace PlayCardClient
{
    public delegate void DisplayMessage(string msg); 

    public partial class MainForm : Form
    {
        private TcpClient Client;
        private byte[] recByte;
        private SplitBytes sb;

        public MainForm()
        {
            InitializeComponent();
        }

        private void btnSend_Click(object sender, EventArgs e)
        {
            if (txtMessage.Text.Trim() != "")
            {
                ChatMessage u = new ChatMessage();
                u.Protocol = "503";
                u.Message = txtMessage.Text.Trim();

                SendText(SerializationFormatter.GetSerializationBytes(u));

                txtMessage.Text = "";
            }
        }

        private void GetMsg(IAsyncResult ar)
        {
            int numberOfBytesRead;

            lock (Client.GetStream())
            {
                numberOfBytesRead = Client.GetStream().EndRead(ar);

                if (numberOfBytesRead < 1)
                {
                    //If a value less than 1 received that means that client disconnected 
                    Disconnect();
                    MessageBox.Show("Disconnected!!");
                    return;
                }
            }

            sb.AddBytes(recByte, numberOfBytesRead);
            recByte = new byte[1024];

            if (Client.GetStream().DataAvailable)
            {
                Client.GetStream().BeginRead(recByte, 0, recByte.Length, new AsyncCallback(GetMsg), Client.GetStream());
            }
            else
            {
                BuildText(sb.ReceiveAllByte);
                sb.Dispose();

                lock (Client.GetStream())
                {
                    AsyncCallback GetStreamMsgCallback = new AsyncCallback(GetMsg);
                    Client.GetStream().BeginRead(recByte, 0, 1024, GetStreamMsgCallback, this);
                }
            }
        }

        private void BuildText(byte[] dataByte)
        {
            BinaryFormatter formatter = new BinaryFormatter();
            MemoryStream stream = new MemoryStream(dataByte);
            CommonProtocol obj = (CommonProtocol)formatter.Deserialize(stream);
            stream.Close();

            string Protocol = obj.Protocol;

            switch (Protocol)
            {
                case "504":     //按Hall发送Client的聊天信息
                    ChatMessage chat = (ChatMessage)obj;
                    string message = chat.UserName + " : " + chat.Message + "\r\n";
                    this.Invoke(new DisplayMessage(DisplayText), message); 
                    break;
            }
        }

        private void SendText(byte[] byteMessage)
        {
            BinaryWriter writer = new BinaryWriter(Client.GetStream()); ;
            writer.Write(byteMessage);
            writer.Flush();
        }

        private void DisplayText(string msg)
        {
            msgViewBox.Items.Add(msg);
        }

        private void Disconnect()
        {
            if (Client != null)
            {
                Client.Close();
                Client = null;
            }
        }

        private void MainForm_Load(object sender, EventArgs e)
        {
            Client = SocketHelper.Instance().Connection;
            sb = new SplitBytes();
            recByte = new byte[1024];

            this.Text = "Chat Client :" + UserSettings.Instance.UserName;

            DisplayText("Welcome " + UserSettings.Instance.UserName + "\r\n");

            //Start Reading 
            AsyncCallback GetMsgCallback = new AsyncCallback(GetMsg);
            (Client.GetStream()).BeginRead(recByte, 0, 1024, GetMsgCallback, this);
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -