日期:2014-05-18  浏览次数:21112 次

c#多个窗体公用一个socket
请教,c/s下,如果我想在多个窗体之间共用同一个socket的话,请问应该怎么做?
因为要统计在线人数,所以希望每用户用一个socket即可,数据传输也不是特别大.

也有另外一种想法,就是共用同一个端口

请大家给个思路.

在线等,18点结贴.

------解决方案--------------------
接口嘛
------解决方案--------------------
抢沙发啦,我也想知道答案,希望高手出来支个招!
------解决方案--------------------
写个类也行啊,
我的问题是接收到的信息如何显视到多个窗体的控件中呢,如TextBox
------解决方案--------------------
帮顶,
------解决方案--------------------
统计在线人数好像和几个socket没什么关系吧?在线的时候发,退出的时候再发不就行了
------解决方案--------------------
和几个Socket没有关系, 你可以为这个Socket建立一个守护线程,专门,为该Socket接收和发送数据,
当窗体需要发送数据的时候,向发送队列发送数据,每个窗体都向这个队列写要发送的数据,然后Socket把接收到的数据,推入接收队列,再由专门的线程来分发给不同的窗体,当然分发规则肯定通讯协议里定义,不知道这样说法对楼主有没有帮助
------解决方案--------------------
写一个类用于处理socket,且这个类使用单例模式创建,这样只会生成一个类的实例,你可以在该类中存放一个计数器,用于计数。
------解决方案--------------------
探讨
和几个Socket没有关系, 你可以为这个Socket建立一个守护线程,专门,为该Socket接收和发送数据,
当窗体需要发送数据的时候,向发送队列发送数据,每个窗体都向这个队列写要发送的数据,然后Socket把接收到的数据,推入接收队列,再由专门的线程来分发给不同的窗体,当然分发规则肯定通讯协议里定义,不知道这样说法对楼主有没有帮助

------解决方案--------------------
定义类对象,在类中与客户端通讯,添加客户端到集合中
实时刷新获取客户端信息
参考
------解决方案--------------------
接口
委托.
------解决方案--------------------
哦,能提供点实例不?谢谢啦
------解决方案--------------------
你要是想要socket通信实现的例子的话倒是可以给你个,如果要实现你现在想要的功能,还得需要做些工作;
需要的话给我个邮箱,我发给你,是基于Winform的
------解决方案--------------------
那用窗体间参数传递就可以实现吧!

窗体间参数传递有几种方式,其中参数传递代码如下:
private string paraCode = null
public string papaValue
{
set
{
paraCode = value;
}
get
{
return paraCode;
}
}
在另外的窗体可以调用该参数,完成数据传递。
------解决方案--------------------
在program.cs里开启socket做后台, 收到数据后分发到各个前台窗口
------解决方案--------------------
抢分咯
明天回答
------解决方案--------------------
探讨
有具体点的代码吗? 能直接赋值,那不是可以直接调用?