c# - 套接字发送客户端列表

标签 c# winforms sockets

我对 C# 不是很熟练,但我将它用于家庭作业。 我创建了一个函数来将连接到服务器的客户端列表发送给其他客户端

private void SendListToClients()
    {
        Socket userSocket=null;
        string username = null;
        string role = null;
        foreach (User Users in UserList)
        {
            userSocket = Users.getSocket();
            username = Users.getUsername();
            role = Users.getRole();
            userSocket.Send(Encoding.ASCII.GetBytes("!ListStart\n"));
            for(int i=0;i<UserList.Count;i++)
            {
                User UsersControl = (User)UserList[i];
                string roleU = UsersControl.getRole();
                string usernameU = UsersControl.getUsername();

                userSocket.Send(Encoding.ASCII.GetBytes("!ClientList:"+usernameU + ":" + roleU+"\n"));       
            }

        }
    }

我的问题出在 userSocket.Send() 行,当我在客户端收到此消息时,我没有收到(例如,如果列表中的用户为 5)5 发送,但 1 发送所有 5用户。 我该如何解决这个问题? 否则有可能通过套接字直接发送我的对象 (UserList) 吗?

最佳答案

来自Socket.Receive Method文档:

If you are using a connection-oriented Socket, the Receive method will read as much data as is available, up to the size of the buffer.

因此,即使服务器一次发送 5 条消息,所有消息都存储在客户端的输入缓冲区中并立即读取。

关于c# - 套接字发送客户端列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14090467/

相关文章:

.net - 如何更改 RichTextBox 中某行的背景颜色?

c# - WinForms - MaskedTextBox - "variable-width"屏蔽可能吗?

c# - winforms - 状态栏标签的工具提示未显示

python - Socket编程--客户端与服务端--接收到损坏的图像

c# - Startup.cs 中的 public void 方法未在构建时运行

c# - Webapi 方法未找到异常 get_MessageHandlers

C# 和 utf8_decode

java - 如果长时间不活动,java.net.DatagramSocket 将等待客户端请求多长时间?

sockets - lua nginx 模块中提到的 TCP 套接字是什么?

c# - Prism 6.1 ViewModelLocator 没有实例化我的 ViewModel