如何从服务器向客户端发送已连接客户端的列表,以区分常规消息?

我是网络编程的新手。在过去的几天中,我已经进行了大量的谷歌搜索和研究工作,并且拥有一个聊天应用程序,该应用程序可以将多个用户连接到服务器,并且可以相互发送消息。


现在,没有用于断开客户端连接的陷阱或方法,我将在以后添加。但是,现在,我希望在客户端窗体的文本框中添加显示在线用户列表的功能。


当客户端连接到服务器时,服务器将该客户端添加到“ clientList”中。但是,我对如何将此列表发送给客户端感到有些困惑,但更重要的是,我如何使客户端认识到这不是常规消息,更何况是客户端列表。


我考虑过制作它,以便它使用唯一的字符串发送它并执行if语句,但是我知道这样做有更好的方法。


在客户端代码上,我有一个后台工作程序,侦听来自服务器的数据。当然,如果我将列表序列化为二进制格式化程序,它将被我的“消息侦听器”接收,并且程序将对连接的客户端的消息和数据感到困惑。因此,我不确定如何区分两者。


我绝不是要您为我编码。我只是从那些在该领域拥有更多智慧和经验的人那里寻求建议。如果我能找到解决此问题的最佳方法的指点,我将不胜感激。感谢您的宝贵时间。


中心边码-


   using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Net.Sockets;

    using System.Net;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;


    namespace socketClientForm

    {

        public partial class Form1 : Form

        {

            private static byte[] buffer = new byte[1024];

            private static Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            public string message = "";

            public Form1()

            {

                InitializeComponent();

                this.Text = "Client";

            }


            delegate void SetTextCallback();


            private void SetText()

            {

                if (this.InvokeRequired)

                {

                    SetTextCallback d = new SetTextCallback(SetText);

                    this.Invoke(d, new object[] { });

                }

                else

                    this.chatBox.AppendText(message);

            }


潇湘沐
浏览 184回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP