社区
C#
帖子详情
C#通讯中,服务器端怎么样同时给每个客户端发送消息?
klzxg2008
2006-11-01 09:06:45
C#通讯中,服务器端怎么样同时给每个客户端发送消息?
...全文
357
7
打赏
收藏
C#通讯中,服务器端怎么样同时给每个客户端发送消息?
C#通讯中,服务器端怎么样同时给每个客户端发送消息?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhongwanli
2006-11-02
打赏
举报
回复
.NET Remoting 事件消息订阅可以满足楼主的需要
Knight94
2006-11-02
打赏
举报
回复
to C#通讯中,服务器端怎么样同时给每个客户端发送消息?
什么方式的通讯?
udp可以广播
tcp只能逐个发
klzxg2008
2006-11-02
打赏
举报
回复
发一些主要的代码,帮忙看一下。刚才的方法我试了,还是不行。
private void StartListening()
{
string hostname = Dns.GetHostName();
IPAddress serverIP = Dns.Resolve(hostname).AddressList[0];
int Port = 6680;
Listener = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
IPEndPoint serverhost = new IPEndPoint(IPAddress.Any,Port);
Listener.Bind(serverhost);
Listener.Listen(50);
try
{
while (!ShuttingDown)
{
// allDone.Reset();
clientSocket = Listener.Accept();
sockList.Add(clientSocket);
ns = new NetworkStream(clientSocket);
receiver = new Thread(new ThreadStart(ReceiveData));
receiver.Start();
// allDone.WaitOne();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.StackTrace.ToString());
}
}
public void ReceiveData()
{
try
{
while(true)
{
int recv = ns.Read(data,0,data.Length);
if(recv >0)
{
this.OnReceiveChangeHandler(data,EventArgs.Empty);
}
}
}
catch(SocketException ex)
{
MessageBox.Show("Unable to connect to server!"+"\\n"+
ex.ToString());
this.close();
}
}
public bool SendMessage(Message message)
{
try
{
string tt = message.node_name;
byte[] data = message.GetBytes();
this.size = data.Length;
ns.Write(data,0,size);
return true;
}
catch(Exception e)
{
MessageBox.Show(e.StackTrace.ToString());
this.close();
return false;
}
}
klzxg2008
2006-11-02
打赏
举报
回复
to :Knight94(愚翁)
你是说每次Accept方法返回一个Socket对象的时候,因该赋给一个局部变量么?
zhuds
2006-11-02
打赏
举报
回复
你可以把客户端保存在一个数组里,然后在一个个发送信息!
Knight94
2006-11-02
打赏
举报
回复
to 另外,当第二个客户端连接服务器时,第一个客户端便不能正常与服务器通讯,为什么呢?
这个问题,估计是全局变量和局部变量的问题,你可能在通过AcceptSocket方法获得一个局部Socket替换了类的成员,这样会造成前面Accept的Socket对象被后面Accept的替换掉,从而只能响应最后一个Socket请求。
klzxg2008
2006-11-02
打赏
举报
回复
但是要是异步通讯的代码中,服务器端怎样获得客户端的地址信息呢?
另外,当第二个客户端连接服务器时,第一个客户端便不能正常与服务器通讯,为什么呢?
C#
--Winform创建TCP服务器与
客户端
互传
消息
实例
C#
--Winform创建TCP服务器与
客户端
互传
消息
实例
C#
编程 socket编程之tcp
服务器端
和
客户端
基于Tcp协议的Socket
通讯
类似于B/S架构,面向连接,但不同的是
服务器端
可以向
客户端
主动推送
消息
。 使用Tcp协议
通讯
需要具备以下几个条件: (1).建立一个套接字(Socket) (2).绑定
服务器端
IP地址及端口号--
服务器端
(3).利用Listen()方法开启监听--
服务器端
(4).利用Accept()方法尝试与
客户端
建立一个连接--
服务器端
(5).利用Co...
C#
基于Socket的TCP
通讯
例程 Server Client
一、简单了解服务端和
客户端
各自的功能 首先应该清楚服务端(Server)和
客户端
(Client)它们各自的功能。 (1)服务端(Server):负责接收
客户端
的请求,然后根据
客户端
请求的内容不同而给
客户端
返回相应的数据。 (2)
客户端
(Client):接服务端,向服务端
发送
自己的业务需求(也就是数据),然后接受服务端返回过来的信息。 (3)分析服务端和
客户端
的功能,可以很清楚的知道,它们完成了数据之间的交流,或者说是业务之间的相互传递与获取。 二、服务器与
客户端
之间信息传递的桥梁(Socket) (1)服务
PLC与上位机的socket
通讯
——上位机
C#
程序(二)
C#
的网口通信 一、命令行
客户端
程序:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Net;using System.Net.Sockets;using System.Threadi...
C#
Scoket异步
通讯
实现(
发送
数据、接收数据)
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; namespace TCP_Server { class Progra
C#
111,129
社区成员
642,536
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章