请问用Remoting有办法可以让服务器直接与客户端通信吗。
我指的是:如有一个服务器,三台客户端。我想让服务器"这次"直接把对象传给"机器二"[就好象进程的显式调用那样而不是经过中转器或在每个客户端那处理到底该批数据让哪个客户端执行]
我指的是:如有一个服务器,三台客户端。我想让服务器"这次"直接把对象传给"机器二"[就好象进程的显式调用那样而不是经过中转器或在每个客户端那处理到底该批数据让哪个客户端执行]
解决方案 »
- using (SqlConnection conn = new SqlConnection(connectionString))用using是什么意思?
- gridview 索引超出了数组界限
- 想了几天还没结果的一个关于窗体的问题
- C# 发送数据提示 远程服务器返回错误: (500) 内部服务器错误
- c#控制台程序怎么oracle连接数据库
- webrequest post提交不上去
- C/S 直连数据库 与 remoting 的区别
- 【百分求助】捕捉麦克风的输入数据。不使用外部DLL
- 怎样在一个构造函数里调用另一个构造函数呢?在线等!!!
- vb如何调用c#开发的web项目中/bin目录下的.dll文件中的函数。
- 请教各位高手一个Onpaint()问题,小弟不胜感激
- 请问C Sharp如何将整数(int)转化成字符串(string)
2、通过TCP或UDP网络编程把序列化的二进制发送给客户端
3、反序列化对象
是不是获取各个客户端的远程对象?还是??
(因为是每个客户端只订阅了自己CAO对象的事件,所以是有选择的传播消息)
有例子吗?觉得有道理
另外,需要客户端去定期激活CAO对象(简单点的话,可以直接用ClientSponsor)然后要看一下Remoting里面怎么用事件,这个也有点烦,因为事件是反向的引用,也就是客户端订阅事件的对象必须是可以Remoting的,需要小心一点关于配置,做Remoting的应该都没什么问题吧
http://www.cnblogs.com/artech/archive/2007/03/01/660595.html
http://blog.csdn.net/johnsonTj/archive/2005/04/24/360518.aspx
重点看其中的混合法
继续求助..怎样用Remoting实现服务端根据指定IP地址,给指定客户端发送信息.
你的服务器叫做A,客户端叫B1、B2等,A、Bx都有remoting服务端,Bx连接A的时候,就把自己的连接地址告诉A,
这样A想往客户端Bx发送东西的时候,就去连接Bx的remoting服务并调用。
服务端:
///创建一个通道实例,该通道使用端口8090
Channel = new TcpChannel( 8090 );
///注册通道
ChannelServices.RegisterChannel( Channel );
RemotingConfiguration.RegisterWellKnownServiceType( typeof( Publisher ), "PublishSubscribe", WellKnownObjectMode.Singleton );
NewPublisher = ( Publisher )Activator.GetObject( typeof( Publisher ), "tcp://localhost:8090/PublishSubscribe" ); 客户端:
/// 创建一个通道监听回调
/// 端口号为0允许系统监听所有的通道,在这里不能指定端口8090。
ClientChannel = new TcpChannel( 0 );
///注册客户通道
ChannelServices.RegisterChannel( ClientChannel );
///通过通道获得发布者对象
NewPublisher = ( Publisher )Activator.GetObject( typeof( Publisher ), "tcp://localhost:8090/PublishSubscribe" );
看你之前发了回过一个贴不是说你已经实现过这样的东西吗?发一份给我参考下..我这几天非搞明白它不可```
public class SerialRunObj : MarshalByRefObject, ISerialRun
{
public event SerialRunEventHandler SerialRunEven; public void SerialRunInfo(Machine info)
{
if (SerialRunEven != null)
{
SerialRunEventHandler tempEvent = null; int index = 1;
foreach (Delegate del in SerialRunEven.GetInvocationList())
{
try
{
tempEvent = (SerialRunEventHandler)del;
tempEvent(info);
//在这可控制给指定某一客户端发信息..但我怎么知道del委拖对象是属于哪个客户端的?
}
catch
{
MessageBox.Show("客户端" + index.ToString() + "断开!");
SerialRunEven -= tempEvent;
}
index++;
}
} }