由于目标机器积极拒绝,无法连接。 127.0.0.1:4200

love_adam1 2009-05-10 09:08:12
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

高手支招~
谢谢~
...全文
21565 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qldsrx 2009-05-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 changjiangzhibin 的回复:]
使用Tcp协议要设置IP地址,不可使用127.0.0.1
[/Quote]

谁告诉你不能使用127.0.0.1,我就是用那个IP本地测试的,完全通过——我怀疑你的分数是假的。
changjiangzhibin 2009-05-10
  • 打赏
  • 举报
回复
使用Tcp协议要设置IP地址,不可使用127.0.0.1
love_adam1 2009-05-10
  • 打赏
  • 举报
回复
楼上能具体点吗?
初学者~
谢谢~
yagebu1983 2009-05-10
  • 打赏
  • 举报
回复
是不是端口已经被占用了。。。
bbb332 2009-05-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 qldsrx 的回复:]
客户端其实也可以互连,建立TcpClient,端口随机并通过唯一的Server告之另一个客户端。而你用的.NET Remoting不是用在远程通信上的,让我感觉杀鸡在用牛刀。
[/Quote]up
qldsrx 2009-05-10
  • 打赏
  • 举报
回复
客户端其实也可以互连,建立TcpClient,端口随机并通过唯一的Server告之另一个客户端。而你用的.NET Remoting不是用在远程通信上的,让我感觉杀鸡在用牛刀。
qldsrx 2009-05-10
  • 打赏
  • 举报
回复
QQ不是这样设计的,虽然我没看过QQ的代码,但是他应该是就一个服务端,不存在多个服务端的,客户端永远不会成为服务端。
love_adam1 2009-05-10
  • 打赏
  • 举报
回复
我想做的是一个类似QQ的聊天工具、

创建两个服务器和客户端都创建起,用其中的一个服务器,两个客户端进行通信。

题外话,那个用户昵称是不是要上传头像在会有,我不是懒,就是找不到设置昵称的地方。
是在我的社区,个人资料下修改哈~
pricks 2009-05-10
  • 打赏
  • 举报
回复
有必要将持续封装的这样好吗?
别人看你这些调用的函数就要费大半天,还有谁来帮你解决问题呀!

一个套接字只能用于连接一个服务端。
如果要让客户端连接多个服务端,就将端口改变。

比如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;
}
qldsrx 2009-05-10
  • 打赏
  • 举报
回复
我很奇怪,你这个应该似乎既是客户端,又是服务端程序啊。如果是那样的话,在已经打开服务端的情况下,你再在本地添加服务端自然会报个端口冲突的错误。不同机器上你这样是没问题的,不过你的服务器端怎么看都是本地。
别告诉我你是在添加客户端,客户端是不需要端口的,而且try块中明显是在注册远程服务啊。我不明白你为什么不用两个Channel,一个TcpServerChannel用于服务端,另一个是TcpClientChannel用于客户端,这样就不会搞错了。

题外话,那个用户昵称是不是要上传头像在会有,我不是懒,就是找不到设置昵称的地方。
wuyq11 2009-05-10
  • 打赏
  • 举报
回复
1.检查windows防火墙是否开放相应SocketTCP/udp端口;
2.防火墙软件是否开放相应SocketTCP/udp端口;

3.如果服务器运行在局域网或广域网内,则将相应的
serverIP,serveraddress设为本机所在局域网或广域网上的IP;

110,545

社区成员

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

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

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