发送数据出去了,但是没有收到数据,暂时先不考虑我发送的格式是否正确,只是请大家帮忙看下除了发送数据部分,其他部分写的是否正确(关键是本地绑定的IP和端口和目标地址和端口这样写有没有冲突),代码如下—>using System.Net;
using System.Net.Sockets;namespace BACnetClient
{
    public partial class Form1 : Form
    {
        Socket bacnet_master_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
        IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("219.142.59.82"), 5022);//目标端口        public Form1()
        {
            InitializeComponent();
        }        private void Form1_Load(object sender, EventArgs e)
        {
            IPEndPoint local_ipep = new IPEndPoint(IPAddress.Parse("192.168.0.24"), 5022);// 绑定端口,192.168.0.24为本地IP
            
            bacnet_master_socket.Bind(local_ipep);
            bacnet_master_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
        }        private void btn_Device_FirmwareRevision_Click(object sender, EventArgs e)
        {
            /***************发送*********************************/
            byte[] data = new byte[1024];
            data[0] = Convert.ToByte('L');
            data[1] = Convert.ToByte('R');
            data[2] = Convert.ToByte('|');
            data[3] = Convert.ToByte('R');
            data[4] = Convert.ToByte('I');
            data[5] = Convert.ToByte('G');
            data[6] = Convert.ToByte('I');
            data[7] = Convert.ToByte('|');
            data[8] = Convert.ToByte('F');
            data[9] = Convert.ToByte('L');
            data[10] = Convert.ToByte('R');
            data[11] = Convert.ToByte('N');
            data[12] = Convert.ToByte('G');
            data[13] = Convert.ToByte('#');
            data[14] = Convert.ToByte('G');
            data[15] = Convert.ToByte('N');
            data[16] = Convert.ToByte('G');
            data[17] = Convert.ToByte('L');
            data[18] = Convert.ToByte('G');
            data[19] = Convert.ToByte('V');
            data[20] = Convert.ToByte('G');
            data[21] = Convert.ToByte('G');
            data[22] = Convert.ToByte('G');
            data[23] = Convert.ToByte('S');
            data[24] = Convert.ToByte('S');
            data[25] = Convert.ToByte('F');
            data[26] = Convert.ToByte('|');            try
            {
                bacnet_master_socket.SendTo(data, (int)27, SocketFlags.None, ipep);
            }
            catch (SocketException)
            {
                System.Windows.Forms.MessageBox.Show("Either the network cable is unplugged, or there is no configured Ethernet Port on this computer");
                return;
            }            /********************************接收***************************************/
            byte[] received = new byte[1024];
            //int recv = bacnet_master_socket.ReceiveFrom(received, ref tmpRemote);
            int recv = bacnet_master_socket.Receive(received);            /********************************************接收******************************************/
            string result = "";//设置断点            System.Windows.Forms.MessageBox.Show(result);
        }
    }
}
希望高手指点,万分感激!!!!!

解决方案 »

  1.   

    先抓包看看有没有发到网络上吧:Wireshark很好用的工具
      

  2.   

    应该先测试一下链路的状况可以用c#来实现ping的方法进行测试public string sPing(string IP)
            {        
                Ping pingSender = new Ping();
                PingOptions options = new PingOptions();
                options.DontFragment = true;
                string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
                byte[] buffer = Encoding.ASCII.GetBytes(data);
                int timeout = 1200;
               
                PingReply reply = pingSender.Send(IP, timeout, buffer, options);
                if (reply.Status == IPStatus.Success)
                {
                                   string sPing;
                   
                    sPing = "网络正常";               
                   return sPing;            
                }
                else
                {
                    return "网络不通";
                   
                }            
              
                    }
      

  3.   


                try
                {
                    //在发送之前首先要连接的!
                    bacnet_master_socket.Connect(ipep);
                    if(bacnet_master_socket.Connected)
                        bacnet_master_socket.SendTo(data, (int)27, SocketFlags.None, ipep);
                }
      

  4.   

    byte[] buffer = new byte[1024]; 
    socket.Receive(buffer); 
    处理客户端的请求并回应客户端 
    string message = ""; 
    byte[] outbytes = System.Text.Encoding.ASCII.GetBytes(message.ToCharArray()); 
    socket.Send(outbytes, message.Length, 0); SOCKET通讯总结