小弟刚学C#网络编程,对socket有几点迷惑,望高手指点迷津:1、当客户端与与服务端建立一个socket后,该socket的生命期是否就一直存在,直到客户端与服务端断 开?还是该Scket一完成任务后就死亡,如客户端向服务端发送了一条消息后,该socket就不存在了?2、当客户端与与服务端建立后,是否只能有一个socket连接,还是可以同时存在两个以上的Socket?
如可以,怎么做到?如不可以,又怎么实现多任务,如QQ:一边视频一边聊天?问得比较愚昧,望大家多指教

解决方案 »

  1.   

    1、用TCP的话,链路一直存在,直到双方任何一方断开连接。
       用UDP的话,双方不存在连接。2、可以建立多个Socket对象,每个Socket使用一个端口
      

  2.   

    1、当客户端与与服务端建立一个socket后,该socket的生命期就一直存在,直到客户端与服务端断 开或你自己调用close关闭。都可以,服务端使用TclList客户端用多个Socket对象
      

  3.   

    socket实例本身是一个对象,生存期符合对象的生存期。
    一个socket连接可以作的事情可以是任何事情,就像你说的qq视频,完全可以用一个socket来完成,主要是看你怎么封装你的数据包。当然也可以建立多个socket连接,但每个连接都会占用一个socket句柄资源。
      

  4.   

    herony420(坦荡荡)如果在同一个socket中同一时间做多任务,如一边视频一边聊天,那我对接受来的数据如何分析是视频数据还是聊天数据?
      

  5.   

    如果现在我想开5个不同的端口来服务各种不同的任务,服务端是否要新建5个对应的Listener呢?
      

  6.   

    5个不同的端口当然要5个listener 了