我也是在网上找的,我要实现的是:我现在手上有个硬件应该是广播的那种,通过ip和端口监听得到硬件发送的数据,但是我测试了一个下午,也没有找到时那儿有问题!就是收不到数据,我用自己写的模拟服务器端可以进行通讯,这是源码:
using System;
using System.Collections;
using System.Net;
using System.Net.Sockets;
using System.Text;public class SelectTcpClient
{
   public static void Main()
   {
      Socket sock = new Socket(AddressFamily.InterNetwork,
                        SocketType.Stream, ProtocolType.Tcp);
      IPEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.1.12"), 1001);
      byte[] data = new byte[1024];
      string stringData;
      int recv;      sock.Connect(iep);
      Console.WriteLine("Connected to server");
      recv = sock.Receive(data);
      stringData = Encoding.ASCII.GetString(data, 0, recv);
      Console.WriteLine("Received: {0}", stringData);
      while(true)
      {
         stringData = Console.ReadLine();
         if (stringData == "exit")
            break;
         data = Encoding.ASCII.GetBytes(stringData);
         sock.Send(data, data.Length, SocketFlags.None);
         data = new byte[1024];
         recv = sock.Receive(data);
         stringData = Encoding.ASCII.GetString(data, 0, recv);
         Console.WriteLine("Received: {0}", stringData);
      }
      sock.Close();
   }
}
哪位高手可以帮我看看!是什么原因!还是用的不对!该怎么写!

解决方案 »

  1.   

    监听应该是
    Socket m_Socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    m_Socket.Bind(new IPEndPoint(IP地址, 端口号));
    m_Socket.Listen(100);
    Socket socket = m_Socket.Accept();byte[] bytes = new byte[1024];
    while (m_Socket.Receive(bytes) > 0)
    {
      ........
    }
      

  2.   

          Socket sock = new Socket(AddressFamily.InterNetwork, 
                            SocketType.Stream, ProtocolType.Tcp); 
    你用的是UDP还是TCP,该写清楚吧.我这儿有一个UDP连接类        public static string serverIP = 服务端IP;
            public static int serverPort = 服务端端口号;
            //存储返回的数据
            int returnCount = 0;
            public static string localIP = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0].ToString();
            public udpServer()
            {
            }
            Socket socket = new Socket(AddressFamily.InterNetwork,SocketType.Dgram, ProtocolType.Udp);
            /// <summary>
            /// 客户端发送一条信息,返回一条相应的记录信息
            /// </summary>
            /// <param name="send_message">发送信息</param>
            /// <param name="strReturn">是否有返回的值</param>
            /// <returns>返回一个字节数组</returns>
            public byte[] sendMessage(byte[] send_message, bool strReturn)
            {
                IPAddress selfIP = IPAddress.Parse(localIP);
                IPEndPoint selfEP = new IPEndPoint(selfIP, 0);            IPAddress serIP = IPAddress.Parse(serverIP);
                IPEndPoint serEP = new IPEndPoint(serIP, serverPort);            int count = 0;
                EndPoint remort = (EndPoint)serEP;//接收从服务端返回的信息
                socket.SendTo(send_message, send_message.Length, SocketFlags.None, serEP);//发送信息
                if (strReturn == false)
                {
                    return null;
                }
                byte[] result = new byte[1024];
                byte[] newResult = null;
                try
                {
                    for (int i = 0; i < 6; i++)
                    {
                        System.Threading.Thread.Sleep(500);
                        if (socket.Available > 0)
                        {
                            count = socket.ReceiveFrom(result, result.Length, SocketFlags.None, ref remort);//接收指令
                            newResult = new byte[count];
                            Array.Copy(result, newResult, count);
                            break;
                        }
                    }
                    time.Enabled = false;
                    return newResult;
                }
                catch
                {
                    return null;
                }
            }
      

  3.   

    Socket sock = new Socket(AddressFamily.InterNetwork, 
                            SocketType.Stream, ProtocolType.Tcp);
    貌似你udp和TCP分不清阿。。