亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

如何創建和使用socket鏈接池

2019-11-17 04:21:21
字體:
來源:轉載
供稿:網友

作者:吳康彬


    采用CS方式的程序不可避免都要碰到socket連接的問題,很多時候,使用編程語言當中自帶的socket庫,使用起來多少有些不習慣,雖然系統自帶的庫在很多異常處理,穩定性上下了很多功夫,但是要去理解和使用那些庫,比如做socket連接池不免要走很多彎路。在這里我和大家討論下怎么樣創建和使用socket鏈接池。
    一般socket鏈接有以下兩種方式:長(常)鏈接和短鏈接。
    長鏈接:當數據發送完成后socket鏈接不斷開。一直保留到異?;蛘呤浅绦蛲顺鰹橹梗@種方式的好處是不用每次去發起連接斷開,在速度上可以比短連接要快一些,但是相對來說對服務器的資源壓力也要大些。長鏈接用的范圍很廣,比如游戲系統,QQ等等,長(常)鏈接一般還需要定時向服務器ping數據,以保證socket鏈接暢通。當ping不通服務器時,需要重新開啟鏈接。
    短鏈接:當一次數據發送完畢后,主動斷開鏈接,每次發送數據都要一次鏈接、斷開操作,這種方式的好處是:對服務器的資源占用相對來說比較小,但是由于每次都要重新鏈接,速度開銷上也比較大,這種方式對于那種不需要經常與服務器交互的情況下比較適用。
    上面兩種方法在用戶量非常大的情況下都存在著很大的不足,因此,我們考慮可以用一種折衷的辦法,那就是使用socket的連接池。
    程序一開始初始化創建若干數量的長鏈接。給他們設置一個標識位,這個標識位表示該鏈接是否空閑的狀態。當需要發送數據的時候,系統給它分配一個當前空閑的鏈接。同時,將得到的鏈接設置為“忙”,當數據發送完畢后,把鏈接標識位設置為“閑”,讓系統可以分配給下個用戶,這樣使得兩種方式的優點都充分的發揮出來了。杭州攜購網絡科技有限公司旗下的攜購獨立購物網(http://www.shopxg.com)系統采用的就是這種方式。用戶數量足夠多的時候,只需要動態增加鏈接池的數量即可。
    下面我們用具體的程序來講解下:
    首先我們聲明一個socket類:

 public class XieGouSocket
 {
  public Socket m_socket;  //Socket對象
  public bool m_isFree;  //判斷是否空閑
  public int m_index;  //在鏈接緩存池中的索引值
 }
 
    下面的函數是創建socket鏈接池,這里為了使代碼更加清晰,我特地把異常處理部分全部取掉了。
 public XieGouSocket[] m_socket; //先定義個緩沖池
 public void  CreateSocketPool()
 {
  string ip= “127.0.0.1”;
  string port= 2003;
  IPAddress serverIp=IPAddress.Parse(ip);
  int serverPort=Convert.ToInt32(port);
  IPEndPoint iep=new IPEndPoint(serverIp,serverPort);
  m_socket = new XieGouSocket[200];
  for(int i =0; i < 200 ; i ++)
  {
   m_socket[i] = new XieGouSocket();
   m_socket[i].m_index = i ;
   m_socket[i].m_isFree = true;
   m_socket[i].m_socket =new Socket(AddressFamily.InterNetwork,SocketType.Stream,PRotocolType.Tcp);
   m_socket[i].m_socket.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.SendTimeout,1000); 
   m_socket[i].m_socket.Connect(iep);
  }
 }

    下面的函數是獲取當前空閑的socket鏈接:
    因為是多線程,所以我們需要加一個原子操作,定義一個原子變量,以防止多個線程之間搶占資源問題的發生。
 private   static   Mutex   m_mutex=new   Mutex();
 public static  XieGouSocket GetFreeConnection()
 { 
  m_mutex.WaitOne(); //先阻塞
  for(int i =0; i < m_socket.Length ; i ++)
  {
   if(m_socket[i].m_isFree) //如果找到一個空閑的
   {
    m_socket[i].m_isFree = false;
    m_mutex.ReleaseMutex();//釋放資源          
    return m_socket[i];
   }
  }
  //如果沒有空閑的鏈接,要么等待,要么程序再動態創建一個鏈接。
  m_mutex.ReleaseMutex();//釋放資源
     
  return null;
 }

    當數據發送完畢后,程序必須將m_isFree 設置為 False。否則只使用不釋放,程序很快就溢出了。
    基本的思路就是這樣的,大家可以在此基礎上好好的改進下,這樣運行的效率就比較高了。
        歡迎大家與我交流。QQ:8814730 Email:wkb@xiegoo.com


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产日本欧美一区二区三区| 欧美一级淫片丝袜脚交| 一区二区国产精品视频| 91网在线免费观看| 国产成人久久精品| 亚洲精品久久久久中文字幕二区| 国产精品成人免费电影| 欧美激情精品久久久久久| 欧美韩日一区二区| 精品国产欧美成人夜夜嗨| 国产午夜精品美女视频明星a级| 97视频在线观看免费高清完整版在线观看| 91高清免费在线观看| 日韩av在线影院| 国产欧美精品久久久| 国产日韩欧美夫妻视频在线观看| 亚洲成色999久久网站| 国产欧美日韩中文| 国产精品网站入口| 欧美电影免费观看网站| 九九热精品在线| 亚洲美女久久久| 日韩久久免费电影| 91成人免费观看网站| 最近2019中文免费高清视频观看www99| 成人午夜两性视频| 青草热久免费精品视频| 欧美日韩福利电影| 亚洲欧美日韩天堂| 日本免费一区二区三区视频观看| 欧美日韩国产中文精品字幕自在自线| www.欧美精品一二三区| 日韩欧美第一页| 综合136福利视频在线| 亚洲性无码av在线| 欧美疯狂xxxx大交乱88av| 国产精品白丝av嫩草影院| 亚洲曰本av电影| 成人福利在线视频| 亚洲资源在线看| 91精品国产自产在线老师啪| 色偷偷888欧美精品久久久| 日韩欧美黄色动漫| 日韩国产欧美区| 九九精品在线观看| 一区二区三区动漫| 国产精品视频大全| 色偷偷综合社区| 亚洲无线码在线一区观看| 久久在线观看视频| 日本aⅴ大伊香蕉精品视频| 欧美成人第一页| 欧美在线激情视频| 亚洲精品日韩激情在线电影| 国产精品极品美女粉嫩高清在线| 亚洲男人天堂手机在线| 92版电视剧仙鹤神针在线观看| 日韩国产精品视频| 亚洲精品自拍第一页| 欧美乱人伦中文字幕在线| 国产精品久久一区主播| 精品国产一区二区三区久久狼5月| 欧洲成人午夜免费大片| 国产成人亚洲综合青青| 最新69国产成人精品视频免费| 国产亚洲精品久久久久久777| 亚洲成人精品视频| 欧美日韩激情小视频| 福利视频一区二区| 欧美美女操人视频| 亚洲国产精久久久久久久| 欧美精品videofree1080p| 久久综合九色九九| 国产在线a不卡| 亚洲成人xxx| 国产精品视频xxxx| 国产成人福利网站| 国产日韩在线播放| 精品无码久久久久久国产| www.亚洲一二| 欧美肥老妇视频| 日韩欧美中文第一页| 91在线视频成人| 国产精品成人一区二区三区吃奶| 精品久久香蕉国产线看观看gif| 成人午夜黄色影院| 91免费观看网站| 久久电影一区二区| 国产精品免费一区豆花| 激情成人中文字幕| 最新日韩中文字幕| 亚洲色图av在线| 国产成人拍精品视频午夜网站| 超碰91人人草人人干| 亚洲人精品午夜在线观看| 亚洲精品久久久久中文字幕欢迎你| 欧美一乱一性一交一视频| 久久久91精品国产一区不卡| 国产精品免费网站| 国产一区二区三区欧美| 亚洲精品国偷自产在线99热| 欧美日韩精品在线| 国精产品一区一区三区有限在线| 欧美肥臀大乳一区二区免费视频| 91po在线观看91精品国产性色| 精品久久久久久国产| 91深夜福利视频| 欧美性高跟鞋xxxxhd| 欧美在线一区二区视频| 国产91精品不卡视频| 精品久久久久国产| 欧美日韩福利在线观看| 亚洲欧美日韩在线一区| 午夜精品理论片| 日韩免费av片在线观看| 欧美激情在线狂野欧美精品| yellow中文字幕久久| 日韩专区中文字幕| 成人黄色在线观看| 欧美日韩国产成人在线观看| 欧美专区在线视频| 91最新国产视频| 亚洲国产精品久久久久久| 欧美大码xxxx| 国产欧美最新羞羞视频在线观看| 中文字幕亚洲综合久久| 久久97久久97精品免视看| 久久福利网址导航| 欧美一区二区三区免费视| 国产精品三级久久久久久电影| 欧美日韩第一页| 欧美激情一二区| 亚洲人成电影在线| 日韩中文字幕视频在线| 精品中文字幕在线观看| 日韩中文第一页| 日韩毛片在线看| 九九久久久久久久久激情| 欧美性在线视频| 欧美国产日本高清在线| 日本高清久久天堂| 久久色免费在线视频| 欧美大全免费观看电视剧大泉洋| 国产成人aa精品一区在线播放| 一本色道久久88亚洲综合88| 国产精品第七影院| 91禁外国网站| 国产精品高清免费在线观看| 91九色综合久久| 在线视频欧美性高潮| 午夜精品一区二区三区av| 亚洲高清久久网| 亚洲精品视频在线观看视频| 日本一区二区三区在线播放| 中文字幕av一区二区三区谷原希美| 中文字幕在线看视频国产欧美在线看完整| 亚洲福利在线观看| 亚洲精选一区二区| 久久久亚洲天堂| 欧美理论在线观看| 亚洲精品综合精品自拍| 亚洲天堂成人在线视频| 欧美性猛交xxxx免费看久久久| 欧美日韩中文字幕日韩欧美|