C# Socket编程:如何在客户端连接时服务端显示'用户名+已上线'?

在使用C#进行Socket编程时,你可能希望在客户端连接到服务器时,服务器能够显示'用户名+已上线'的消息,以便于监控连接状态。以下是如何实现这一功能的步骤:

1. 在SUser类中添加用户名字段:

在你的SUser类中,添加一个私有字段来存储用户名:csharpprivate string susername;

2. 在SUser类的构造函数中初始化用户名:

修改SUser类的构造函数,接收用户名作为参数,并将其赋值给susername字段:csharppublic SUser(Action ShowMsg, Socket client, string susername){ this.ShowMsg = ShowMsg; this.sClient = client; this.susername = susername; // ... 其他初始化代码 ...}

3. 在Server类的StartJS方法中发送和显示消息:

在Server类的StartJS方法中,当客户端连接成功并创建SUser对象后,发送包含用户名的消息给服务器,并在服务器端显示'用户名+已上线'的消息:csharpSUser newUser = new SUser(ShowMsg, remote_client, susername);// 发送'用户名+已上线'的消息给服务器newUser.Send(susername + '已上线'); // 在服务器端显示'用户名+已上线'的消息ShowMsg(susername + '已上线');

**完整代码示例:**csharp// Server类public class Server{ // ... 其他代码 ...

public void StartJS()    {        // ... 其他代码 ...

    while (true)        {            Socket remote_client = serverSocket.Accept();            // ... 获取用户名(例如,可以通过客户端连接时发送的第一个消息获取) ...            string susername = GetUsername(remote_client);             SUser newUser = new SUser(ShowMsg, remote_client, susername);            newUser.Send(susername + '已上线');            ShowMsg(susername + '已上线');

        // ... 其他代码 ...        }    }

// ... 其他代码 ...}

// SUser类public class SUser{ private string susername; // ... 其他字段 ...

public SUser(Action<string> ShowMsg, Socket client, string susername)    {        // ... 其他初始化代码 ...        this.susername = susername;    }

// ... 其他方法 ...

public void Send(string message)    {        // ... 发送消息到客户端的代码 ...    }}

注意:

  • 这只是一个简化的示例,你需要根据你的实际代码结构和需求进行适当的修改。* 确保你的客户端和服务器端能够正确地处理用户名信息。* 你可以使用其他方法来显示'用户名+已上线'的消息,例如,将其写入日志文件或数据库。
C# Socket编程:如何在客户端连接时服务端显示'用户名+已上线'?

原文地址: https://www.cveoy.top/t/topic/dop0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录