C# socket 服务器端 如何向所有的客户端发送消息(服务器拥有客户端的socket)?

 我来答
石哥在拌饭
推荐于2016-04-20 · TA获得超过530个赞
知道小有建树答主
回答量:573
采纳率:100%
帮助的人:566万
展开全部
首先建议使用一个线程向所有客户端发送消息;
在写一个方法发送消息, 方法里面需要 消息和socket 参数;
Thread tSend= new Thread(SendAll);

private void SendAll()
{
//遍历所有的Socket,调用Send(string msg,Socket socket)方法
//不知道你的Socket放到哪里,如果放到集合就遍历集合挨个调用
}

private void Send(string msg,Socket socket)
{
byte[] buffer = Encoding.Default.GetBytes(msg);
socket.Send(buffer);
}
追问
那么 这样客户端如何 接受了  客户端不知道服务器什么时候发送的啊?另外请教一下这样的方式应该属于TCP传递 是吗?
追答
客户端在连接到服务器的时候 ,开启一个线程用来监听接收服务端发送来的消息(客户端的Socket不能关闭掉,一直保持连接状态)。

//客户端
//接收服务器发来的消息
Thread th = new Thread(Rec);
th.IsBackground = true;
th.Start();

//接收的服务器信息方法
void Rec()
{
while(true)
{
byte[] buffer = new byte[1024 * 1024];
int n = socket.Receive(buffer);//socket是连接服务器的
//读取服务端发来的消息
string msg = Encoding.Default.GetString(buffer, 0, n);
}
}

你在创建Socket的时候选择TCP方式的:
参数1目前IPV4的方式
参数2流式
参数3TCP
new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

流式Socket:
面向连接的Socket,针对于面向连接的TCP服务应用,安全,但是效率低(三次握手)
51IDC
2024-12-01 广告
作为上海锐速网络科技有限公司的一员,我们专注于构建高效、稳定的服务器后台系统。我们运用先进的技术架构和严格的开发流程,确保服务器后台能够应对各种业务挑战,提供稳定可靠的数据处理能力和服务支持。同时,我们不断优化系统性能,提高安全性和可维护性... 点击进入详情页
本回答由51IDC提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式