如何让多个类使用同一个Socket收发数据?

gdufstww 2007-03-05 08:54:53
最近在用C#开发,遇到了一个Socket的使用问题:
我想设计一个接口:Interface,其中有个Send方法,然后派生出若干个类,分别为A, B, C, D等,其中Send方法是想客户端发送消息。
现在的问题是:我可以为Interface接口添加成员变量Sock,以使得Send方法可以通过这个Sock进行发送,但是我无法使得Interface.Sock这个Sock和外部有TcpListener.Accept方法获取的Socket保持一致。
以前用VC的时候,CSocket类体统了Attach方法可以通过一个Handle进行识别,但是.Net的Socket类虽然提供了Handle属性,但是没有提供相应的函数可以使用这个Handle。

也许我将问题描述成下面的情况比较容易理解:
……
Socket socket = tcpListener.AcceptSocket();
A a = new A(socket);
B b = new B(socket);
C b = new C(socket);
D b = new D(socket);
……
现在的问题就是上面的4个构造函数传递进去的参数,能否保证对象里面的Sock成员和外面的那个socket保持一致,也就是当我调用Send方法的时候能否准确的将消息发送给客户端?
注:以前的MFC的做法是取得socket的Handle,然后传递给a, b, c, d的Sock成员。

其实我也可以使用下面的方法来达到目的:
Class SendData
{
public:
Sock;
Send(A a);
Send(B b);
Send(C c);
Send(D d);
}
SendData SD(tcpListener.AcceptSocket());
但是这个方法好像不符合面向对象的原则,属于面向过程的方法。
...全文
219 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gdufstww 2007-03-06
  • 打赏
  • 举报
回复
回heshl:
因为我使用多线程跟踪多客户端,使用今天的不合适。
whq1982 2007-03-05
  • 打赏
  • 举报
回复
A a = new A(socket);这样是可以的
heshl 2007-03-05
  • 打赏
  • 举报
回复
把基类的方法定义为静态的,应该就相当于用的是同一SOCKET了!没有实际做过,看书上的说法应该是这样!
帮LZ顶下!

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧