是这样的,如果我把我的客户端和服务器端放在同一台机器上就能正常收发数据,但是把客户端放在另一台电脑上就不能联通,我们的是学校内网,另外服务器端的端口确实打开了。有人说数据被防火墙屏蔽了,但是我们两台机器把防火墙杀毒软件都关了也没用,不能互相ping通。帮帮啊,怎么解决

解决方案 »

  1.   

    不能ping通,肯定收发信息失败!先检查网络,再试收发数据.
    查看两台机器是否在同一个网段内.
      

  2.   

    我开了telnet服务,我在他那telnet 10.2.17.25能连到我的电脑。我的程序端口是60000,我用telnet10.2.17.25 60000 就不能连通。我们都在一个内网。网络肯定没问题
      

  3.   

    我们学校每个宿舍楼是一个网段,我们两台机器在一个宿舍,另外remoting能连通,socket就不能连通。代码如下
    服务器端:本机ip10.2.17.25, private void Form1_Load(object sender, EventArgs e)
            {
                socketInit();
                
            }        private void socketInit()
            {
                if (privateUdpSock == null)
                {
                    privateUdpSock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                    IPEndPoint IPE2 = new IPEndPoint(Dns.Resolve(Dns.GetHostName()).AddressList[0], 60000);
                    udpSource us2 = new udpSource();
                    privateUdpSock.Bind(IPE2);
                    us2.ep = (EndPoint)IPE2;
                    us2.workingSock = privateUdpSock;
                    us2.data = new byte[1024];
                    privateUdpSock.BeginReceiveFrom(us2.data, 0, 1024, SocketFlags.None, ref us2.ep, new AsyncCallback(privateCallBack), us2);
                }
            }
            public void privateCallBack(IAsyncResult ar)
            {
                CheckForIllegalCrossThreadCalls = false;
                udpSource us2 = (udpSource)ar.AsyncState;
                int i = privateUdpSock.EndReceiveFrom(ar, ref us2.ep);
                string remoteIp = Encoding.Default.GetString(us2.data, 0, i);
                this.richTextBox1.AppendText(remoteIp + Environment.NewLine);
                privateUdpSock.BeginReceiveFrom(us2.data, 0, 1024, SocketFlags.None, ref us2.ep, new AsyncCallback(privateCallBack), us2);        }客户端:private void Form1_Load(object sender, EventArgs e)
            {
                Socket temp = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                IPEndPoint IPE = new IPEndPoint(IPAddress.Parse("10.2.17.25"), 60000);
                
                byte [] ss=Encoding.Default.GetBytes("hahahah");
                temp.SendTo(ss, (EndPoint)IPE);
                
                        }