IPAddress ServerIp = GetServerIP();            IPEndPoint iep = new IPEndPoint(ServerIp, 8000);
            socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);            Control.CheckForIllegalCrossThreadCalls = false;            socket.Bind(iep);           socket.Listen(1); // 这句报错。错误如下:System.Net.Sockets.SocketException: The attempted operation is not supported for the type of object referenced
   at System.Net.Sockets.Socket.Listen(Int32 backlog)
   at SOCKET.Form1.ls() in C:\Documents and Settings\daniel\Desktop\c#学习笔记\c#网络编程\SOCKET\SOCKET\Form1.cs:line 63
  
 如果
     socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);换成tcp的如下     socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);则不报错,请指教

解决方案 »

  1.   

    如果你是用的UDP的协议,不能调用listen   
          面向联接的才需要调用listen   
      

  2.   

    对啊,UDP是无连接的,所以不需要监听!
      

  3.   

    那我把侦听去掉后也是会有问题的?udp和tcp两者socket编程很不一样么?能给个udp辕马么?
      

  4.   

    UDP貌似很麻烦还要自己加数据验证,用TCP简单
      

  5.   

    这儿有个例子
    http://www.cnblogs.com/supercode/articles/159751.html