社区
C#
帖子详情
C#通讯中,服务器端怎么样同时给每个客户端发送消息?
klzxg2008
2006-11-01 09:06:45
C#通讯中,服务器端怎么样同时给每个客户端发送消息?
...全文
318
7
打赏
收藏
C#通讯中,服务器端怎么样同时给每个客户端发送消息?
C#通讯中,服务器端怎么样同时给每个客户端发送消息?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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#
Socket_服务端向指定的
客户端
发送
消息
(包含服务器)
要做到这一点,服务器需要在处理
每个
连接时保存
客户端
的Socket引用,通常存储在一个列表或字典
中
。当需要向特定
客户端
发送
消息
时,找到对应的Socket,然后调用`Send()`方法。 文件"C0710_ChatRoom_Server"可能包含...
C#
socket编程游戏(1服务器,多
客户端
)
这可以通过将
每个
客户端
的Socket对象添加到一个集合
中
来实现。当接收到新的连接请求时,服务器可以将新Socket添加到列表,并为其创建一个新的线程或异步操作来处理与该
客户端
的通信,确保并发性能。 对于
客户端
,...
C#
即时
通讯
源码
服务器端
可能使用了ServerSocket来监听
客户端
连接,而
客户端
则通过Socket连接到服务器,并通过
发送
特定的协议格式(如JSON或自定义二进制格式)将
消息
传递给服务器。 在源码
中
,我们可能还会看到一些设计模式的应用...
C#
编写Modbus TCP
客户端
程序
NModbus库提供了
C#
实现的Modbus协议功能,包括TCP
客户端
和
服务器端
,可以极大地减少编写自定义代码的工作量。 最后,调试和测试是关键。确保你的Modbus TCP
客户端
能正确地与不同类型的Modbus设备通信,包括模拟器和...
Socket聊天程序(一个服务端,多个
客户端
)
在本文
中
,我们将深入探讨Socket编程的基本概念、
C#
中
的Socket类、
服务器端
与
客户端
的设计以及如何实现多用户聊天功能。 首先,Socket是网络通信
中
的基本组件,它代表了两个网络节点间的一个连接。在
C#
中
,`System...
C#
111,094
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章