1.检查windows防火墙是否开放相应SocketTCP/udp端口;
2.防火墙软件是否开放相应SocketTCP/udp端口;3.如果服务器运行在局域网或广域网内,则将相应的
serverIP,serveraddress设为本机所在局域网或广域网上的IP;

解决方案 »

  1.   

    我很奇怪,你这个应该似乎既是客户端,又是服务端程序啊。如果是那样的话,在已经打开服务端的情况下,你再在本地添加服务端自然会报个端口冲突的错误。不同机器上你这样是没问题的,不过你的服务器端怎么看都是本地。
    别告诉我你是在添加客户端,客户端是不需要端口的,而且try块中明显是在注册远程服务啊。我不明白你为什么不用两个Channel,一个TcpServerChannel用于服务端,另一个是TcpClientChannel用于客户端,这样就不会搞错了。题外话,那个用户昵称是不是要上传头像在会有,我不是懒,就是找不到设置昵称的地方。
      

  2.   

    有必要将持续封装的这样好吗?
    别人看你这些调用的函数就要费大半天,还有谁来帮你解决问题呀!一个套接字只能用于连接一个服务端。
    如果要让客户端连接多个服务端,就将端口改变。比如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;
    }
      

  3.   

    QQ不是这样设计的,虽然我没看过QQ的代码,但是他应该是就一个服务端,不存在多个服务端的,客户端永远不会成为服务端。
      

  4.   

    客户端其实也可以互连,建立TcpClient,端口随机并通过唯一的Server告之另一个客户端。而你用的.NET Remoting不是用在远程通信上的,让我感觉杀鸡在用牛刀。
      

  5.   

    使用Tcp协议要设置IP地址,不可使用127.0.0.1