刚做通信这块,不太清楚,TCP连接,为什么有的人用Socket,有的人用SocketChannel,它们有什么区别和联系吗?哪个更好一点?请大家指教一下!

解决方案 »

  1.   

    本质都是一样的
    SocketChannel属于nio,支持异步非阻塞连接.当然Socket也可以自己来实现非阻塞连接.
    一般来说使用SocketChannel会有更好的性能(Socket实际应该比SocketChannel更高效,不过一般使用到最后,由于使用者设计等原因,效率反而比直接使用SocketChannel低)
    大概是这样的
      

  2.   

    用SocketChannel发送数据时,是不是直接SocketChannel对象.Write("....数据");就能发出去了,需不需要像Socket那样要IP和端口的?
      

  3.   

    当然需要ip以及端口了,不然和谁连接啊...你不知道人家家的地址怎么去串门你注意,SocketChannel的是abstract类,其构造方法也是protected 
    你要使用SocketChannel,也是需要由一个Socket对象得到的,Socket.getChannel()
    你的Socket对象的完整声明是需要ip以及端口的
      

  4.   

    nio比socket难好多呀,先把socket搞好吧我现在也在写socket呢……