为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
潇湘沐 2021-05-12 18:33:13
我是网络编程的新手。在过去的几天中,我已经进行了大量的谷歌搜索和研究工作,并且拥有一个聊天应用程序,该应用程序可以将多个用户连接到服务器,并且可以相互发送消息。现在,没有用于断开客户端连接的陷阱或方法,我将在以后添加。但是,现在,我希望在客户端窗体的文本框中添加显示在线用户列表的功能。当客户端连接到服务器时,服务器将该客户端添加到“ 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);            }
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 180 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信