由于目标机器积极拒绝,无法连接。 127.0.0.1:4200
private void FrmChat_Load(object sender, EventArgs e){
//通过编程设置反序列级别
BinaryServerFormatterSinkProvider serverProvider = new BinaryServerFormatterSinkProvider();
serverProvider.TypeFilterLevel = TypeFilterLevel.Full;
//设置通道属性
IDictionary props = new Hashtable();
props["port"] = 0; //要是我把0改成4200就对了,但是但我在没有关的情况下,再添加一个客户端,就要报通常每个套接字地址(协议/网络地址/端口)只允许使用一次。
//注册http通道,用于连接自己或他人的服务器
TcpChannel chn = new TcpChannel(props, null, serverProvider);
ChannelServices.RegisterChannel(chn);
repeater.ReceiveMessage += new MessageReceiveHandler(repeater_ReceiveMessage);
try
{
//加载自己的ChatServer对象,用于其他人向自己发送消息
// RemotingConfiguration.Configure("App.config");
RemotingConfiguration.RegisterWellKnownServiceType(typeof(Common.ChatServer), "ChatServer.rem", WellKnownObjectMode.Singleton);
}
catch { }
//获得服务器 远程对象的本地代理
chatServer = (IChatReceiver)Activator.GetObject(typeof(IChatReceiver), "Tcp://localhost:4200/ChatServer.rem");
chatServer.AddEventRepeater(repeater);
}
这是我以个客户端的load事件,运行的时候就报由于目标机器积极拒绝,无法连接。 127.0.0.1:4200
高手支招~
谢谢~ --------------------编程问答-------------------- 1.检查windows防火墙是否开放相应SocketTCP/udp端口;
2.防火墙软件是否开放相应SocketTCP/udp端口;
3.如果服务器运行在局域网或广域网内,则将相应的
serverIP,serveraddress设为本机所在局域网或广域网上的IP;
--------------------编程问答-------------------- 我很奇怪,你这个应该似乎既是客户端,又是服务端程序啊。如果是那样的话,在已经打开服务端的情况下,你再在本地添加服务端自然会报个端口冲突的错误。不同机器上你这样是没问题的,不过你的服务器端怎么看都是本地。
别告诉我你是在添加客户端,客户端是不需要端口的,而且try块中明显是在注册远程服务啊。我不明白你为什么不用两个Channel,一个TcpServerChannel用于服务端,另一个是TcpClientChannel用于客户端,这样就不会搞错了。
题外话,那个用户昵称是不是要上传头像在会有,我不是懒,就是找不到设置昵称的地方。 --------------------编程问答-------------------- 有必要将持续封装的这样好吗?
别人看你这些调用的函数就要费大半天,还有谁来帮你解决问题呀!
一个套接字只能用于连接一个服务端。
如果要让客户端连接多个服务端,就将端口改变。
比如QQ,不同的聊天窗口,端口都不一样的。
如果你要连接多个服务端,可以设置条件,让端口自动增1;
同时,端口号一般情况下需要大于1000。
例如你的这个例子可以这样来:
将原来的props["port"] = 0;改为以下:
for(int i=0;i<portList.lentgth;i++)
{
if(props.Contains["1000"])
props["port"]=props(portList.length-1)+1;
}
--------------------编程问答-------------------- 我想做的是一个类似QQ的聊天工具、
创建两个服务器和客户端都创建起,用其中的一个服务器,两个客户端进行通信。
题外话,那个用户昵称是不是要上传头像在会有,我不是懒,就是找不到设置昵称的地方。
是在我的社区,个人资料下修改哈~ --------------------编程问答-------------------- QQ不是这样设计的,虽然我没看过QQ的代码,但是他应该是就一个服务端,不存在多个服务端的,客户端永远不会成为服务端。 --------------------编程问答-------------------- 客户端其实也可以互连,建立TcpClient,端口随机并通过唯一的Server告之另一个客户端。而你用的.NET Remoting不是用在远程通信上的,让我感觉杀鸡在用牛刀。 --------------------编程问答-------------------- up --------------------编程问答-------------------- 是不是端口已经被占用了。。。 --------------------编程问答-------------------- 楼上能具体点吗?
初学者~
谢谢~ --------------------编程问答-------------------- 使用Tcp协议要设置IP地址,不可使用127.0.0.1 --------------------编程问答--------------------
谁告诉你不能使用127.0.0.1,我就是用那个IP本地测试的,完全通过——我怀疑你的分数是假的。
补充:.NET技术 , C#