我是网络编程的新手。在过去的几天中,我已经进行了大量的谷歌搜索和研究工作,并且拥有一个聊天应用程序,该应用程序可以将多个用户连接到服务器,并且可以相互发送消息。
现在,没有用于断开客户端连接的陷阱或方法,我将在以后添加。但是,现在,我希望在客户端窗体的文本框中添加显示在线用户列表的功能。
当客户端连接到服务器时,服务器将该客户端添加到“ 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);
}
客户端A通过服务器给客户端B发送消息
客户端与服务端连接问题
向指定的客户端发送消息
socket服务器与客户端通信问题------服务器循环接收客户端消息
相关分类