下载了个c#版的p2p聊天工具,调试时出现“由于目标计算机积极拒绝,无法连接。 127.0.0.1:8888”错误提示,请问高手这如何解决。
ps:防火墙我关闭了,端口号也测试了几个,都是大于1000的,不过都出现这个错误
我是刚接触网络编程,现在课程设计需要用到,所以想找个例子学习一下。
资源我重新上传了(我不知道我在哪下载的了,只好重新上传)
http://download.csdn.net/source/3377954

解决方案 »

  1.   

    在运行中输入cmd ,然后用 netstat -an 看下有没有8888这个端口?至少可以看是不是被占用了
      

  2.   

    是TCP协议吧,原因是服务器没有启动,或者启动了没有处于侦听状态
      

  3.   

    是TCP协议,在实例化tcpclient = new TcpClient(remoteIpString, remotePort);的时候报错。
    我想问一下,在同一个程序中怎么既充当服务器有充当客户端?
    很有如果我用本机的ip做监听服务器地址,然后用127.0.0.1做客户机的ip地址可以嘛?
    我想做的是P2P数据传送
      

  4.   


    这个8888应该是服务端的监听端口,如果netstat看不到的话肯定是会发生lz你所说的问题的。你应该还要启动这个服务端才对。
      

  5.   

    貌似不是在服务器端了,程序开始默认获取本机ip地址以及一个可用的端口,然后对这个端口进行监听。然后让你添加一个或多个好友ip地址及端口号。我是在添加好友的时候出现这个错误的。添加好友的ip我试过用127.0.0.1和本机ip,都报这个错
      

  6.   

    网上那些“范例”很多都是所谓的单机demo,不要相信是产品的。回答你#4楼的问题。最起码的,通用服务器不是什么什么127.0.0.1进行bind操作的。比较正规的是IPAddress.Any,比较业余的也是从dns对象中遍历IPAddress集合,找出其中第一个符合ipv4模式的地址。你看到127.0.0.1的,直接把这个写“范例”的作者当作骗子好了。
      

  7.   

    大规模的测试,产品化的测试,这是必需的。不要相信仅仅是为了掩饰一个特别方法随便写的所谓范例。即使是msdn上的通讯范例,大多数也是非产品化的。因为它如果按照产品设计必须有的要素来设计,初学者反而会“看不懂”。这就是一个现实矛盾。
      

  8.   

    服务器应该害是启动了的,服务器的ip是本机ip,端口号时一个随机可用的值。这是我的理解。
    我把监听的代码贴上来,在程序加载方法里调用
    ThreadStart myThreadStartDelegate = new ThreadStart(Listensing);
                
                //创建一个用于监听的线程对象,通过代理执行线程中的方法            myThread = new Thread(myThreadStartDelegate);
                //启动线程
                myThread.Start();
    一下是监听方法
     private void Listensing()
            {
                Socket socket = null;
                //获取本机上第一个可用的IP地址            myIPAddress = (IPAddress)Dns.GetHostAddresses(Dns.GetHostName()).GetValue(0);
                Random r = new Random();
                while (true) 
                {
                    try
                    {
                        //随机产生一个0~65535之间的端口号
                        myPort = r.Next(65535);
                        //myPort = 8888;
                        //创建TcpListener对象,在本机的IP和Port端口监听连接到该IP和端口的请求
                        tcpListener = new TcpListener(myIPAddress, myPort);
                        //开始监听,如果不出现异常,则说明IP地址和端口号可用
                        tcpListener.Start();
                        //显示IP地址和端口
                        ShowLocalIPAndPort();
                        //在信息窗口显示成功信息
                        ShowMyMessage(string.Format("尝试用端口{0}监听成功", myPort));
                        ShowMyMessage(string.Format("<message>[{0}]{1:h点m分s秒}开始在端口{2}监听与本机的连接", myIPAddress, DateTime.Now, myPort));
                        break;
                    }
                    catch 
                    {
                        //继续while循环,以便随机找下一个可用端口号,同时显示失败信息
                        ShowMyMessage(string.Format("尝试用端口{0}监听失败", myPort));
                    }
                }
                while (true) 
                {
                    try
                    {
                        //使用阻塞方式接受客户端连接,根据连接信息创建Tcpclient对象
                        //注意:AcceptSocket接受到新的连接请求才会继续执行其后的语句
                        socket = tcpListener.AcceptSocket();
                        //如果往下执行,说明已经根据客户端连接请求创建了套接字
                        //使用创建的套接字接受客户端发送的信息
                        NetworkStream stream = new NetworkStream(socket);
                        StreamReader sr = new StreamReader(stream);
                        string recieveMessage = sr.ReadLine();
                        int i1 = recieveMessage.IndexOf(",");
                        int i2 = recieveMessage.IndexOf(",", i1 + 1);
                        int i3 = recieveMessage.IndexOf(",", i2 + 1);
                        string ipString = recieveMessage.Substring(0, i1);
                        string portString = recieveMessage.Substring(i1 + 1, i2 - i1 - 1);
                        string messageTypeString = recieveMessage.Substring(i2 + 1, i3 - i2 - 1);
                        string messageString = recieveMessage.Substring(i3 + 1);
                        ShowMyMessage(ipString, portString, messageTypeString, messageString);
                    }
                    catch 
                    {
                        //通过停止TcpListener使AcceptSocket方法出现异常
                        //在异常处理中关闭套接字并终止线程
                        if (socket != null) 
                        {
                            if (socket.Connected) 
                            {
                                socket.Shutdown(SocketShutdown.Receive);
                            }
                            socket.Close();
                        }
                        myThread.Abort();
                    }
                }
            } 
      

  9.   

    http://topic.csdn.net/u/20100506/18/19b27fcf-af70-4016-a30c-10de342c3214.html
      

  10.   

    System.Net.WebException: 无法连接到远程服务器 ---> System.Net.Sockets.SocketException: 由于目标计算机积极拒绝,无法连接。 127.0.0.1:80
       在 System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
       在 System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP)
       在 System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)
       --- 内部异常堆栈跟踪的结尾 ---
       在 System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
       在 System.Net.HttpWebRequest.GetRequestStream()
       在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
      
      

  11.   

    我今天也发现这个问题了,最终发现:
    如果服务器启动监听时监听的地址不是127.0.0.1,而是192.168.0.1,那么直接连接127.0.0.1会被拒绝,连接192.168.0.1才会成功。楼上sp1234的说法正确,服务器应该监听IPAddress.Any,也就是0.0.0.0,那么通杀所有ip连接