Remoting如何实现点对点(非广播)

flypigluo 2006-10-06 04:27:44
在网上见过不少用Remoting实现广播的,
但如何实现真正的点对点?实现Server
与其中的特定Client互动也可以。
比如某一Client向Server提出要求,Server作出回应。
//---注意,不是广播,要特定Client,
希望清楚的朋友给我提点建议
...全文
374 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序的色彩 2007-01-18
  • 打赏
  • 举报
回复
实现这一点并不难啊.
所谓的点对点,分为三种:

服务器中继模拟点对点(适合B/S结构,如聊天室)
优点:实现简单,方便管理.
缺点:服务器压力大,通过中转发送文件和消息.

真正的点对点(如MSN和QQ)
一个程序即作为服务器,又作为客户端
需要知道对方的IP和端口.
一般丰在中心注册服务器.
适合于较大范围的连接.

主从机(如CS游戏)
结合了以上两个的优点.
简化了注册服务器.适合于使用在IP已知.如LAN.

你可以通过(SANK )也就是Remoting事件,事件中可以用一个已serilazable类的参数来传参,比如说指定的IP实现点对点,这个工程我现在就在做.而且做得非常成功.我们用的模式是最后一种,也就是主从机的原理实现的.

swimmingfish2004 2006-11-06
  • 打赏
  • 举报
回复
顶。期待peteryhliu能够给出更详细一点的代码
  • 打赏
  • 举报
回复
很希望知道啊。。。

我頂了。﹗
flypigluo 2006-10-31
  • 打赏
  • 举报
回复
peteryhliu
能讲具体点吗
江城老温 2006-10-11
  • 打赏
  • 举报
回复
mark.
peteryhliu 2006-10-11
  • 打赏
  • 举报
回复
为每个client创建一个有event的object.

public A:MarshalByRefObject
{
private static SortedDictionary<string,B> _lstBs;

public B GetB(string __strClientID)
{
if (!_lstBs.containkey(__strClientID) )
{
B b = new B();
_lstBs.add(b);
}
}
}

public delegate void KK(....);
public B :MarshalByRefObject
{
public event KK _eventKK;

...........
}
flypigluo 2006-10-10
  • 打赏
  • 举报
回复
sink我是用的, 也没实现我要的功能,能说说你的实现吗?
//---
peteryhliu:
看你的意思好像没必要用牛刀吧,就是remoting call嘛
//----
to peteryhliu:
能说说你的实现吗
amingo 2006-10-07
  • 打赏
  • 举报
回复
帮顶
peteryhliu 2006-10-07
  • 打赏
  • 举报
回复
看你的意思好像没必要用牛刀吧,就是remoting call嘛。
peteryhliu 2006-10-07
  • 打赏
  • 举报
回复
要用到sink
ice_frank 2006-10-06
  • 打赏
  • 举报
回复
UP
股神 2006-10-06
  • 打赏
  • 举报
回复
顶了.........

110,533

社区成员

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

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

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