青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-341  評論-2670  文章-0  trackbacks-0
    為了建立一個remote object access system我不得不封裝了socket、pipe以及synchronize objects。不過我還不知道如何實現穿透,這個就暫時算了。今晚用了兩個小時封裝了socket的一些必要操作,并寫了人生中第一個socket程序。

    這個程序同時作為server和client。第一次啟動的為server。接下來server進行監聽,client則往server發信息并接受返回的信息。server會將接受到的信息進行反轉發回去,除非收到了exit結束線程,last結束線程并結束監聽。

    明天繼續寫腳本引擎的教程。
  1 #include "..\..\..\..\VL++\Library\Data\VL_Comm.h"
  2 #include "..\..\..\..\VL++\Library\Platform\VL_Console.h"
  3 #include "..\..\..\..\VL++\Library\Data\VL_System.h"
  4 
  5 using namespace vl;
  6 using namespace vl::platform;
  7 using namespace vl::system;
  8 using namespace vl::system::synchronization;
  9 using namespace vl::communication;
 10 
 11 volatile VBool LastSocketClient=false;
 12 
 13 class SocketThread : public VL_Thread
 14 {
 15 protected:
 16     VL_ServerSocket* FSocket;
 17 public:
 18     SocketThread(VL_ServerSocket* Socket):VL_Thread(false,true)
 19     {
 20         FSocket=Socket;
 21     }
 22 
 23     ~SocketThread()
 24     {
 25         delete FSocket;
 26     }
 27 
 28     void Run()
 29     {
 30         VWChar Buffer[1024];
 31         while(true)
 32         {
 33             memset(Buffer,0,sizeof(Buffer));
 34             if(FSocket->ReadData((VBuffer)Buffer,sizeof(Buffer),false)>0)
 35             {
 36                 if(wcscmp(Buffer,L"exit")==0)
 37                 {
 38                     return;
 39                 }
 40                 else if(wcscmp(Buffer,L"last")==0)
 41                 {
 42                     LastSocketClient=true;
 43                     return;
 44                 }
 45                 VInt Len=wcslen(Buffer);
 46                 for(VInt i=0;i<Len/2;i++)
 47                 {
 48                     VWChar First=Buffer[i];
 49                     Buffer[i]=Buffer[Len-1-i];
 50                     Buffer[Len-1-i]=First;
 51                 }
 52                 FSocket->WriteData((VBuffer)Buffer,Len*sizeof(VWChar));
 53             }
 54             else
 55             {
 56                 return;
 57             }
 58         }
 59     }
 60 };
 61 
 62 void vlmain(VL_Console& Con)
 63 {
 64     Con.SetTitle(L"Vczh Socket");
 65     Con.SetTestMemoryLeaks(true);
 66     Con.SetPauseOnExit(false);
 67 
 68     VBool ServerProcess=false;
 69     VL_SynEvent Event;
 70     switch(Event.Create(false,true,L"VCZH_EVENT"))
 71     {
 72     case VL_SynObject::arSucceed:
 73         ServerProcess=true;
 74         break;
 75     case VL_SynObject::arAlreadyExists:
 76         break;
 77     case VL_SynObject::arFail:
 78         Con.Write(L"Fail\r\n");
 79         return;
 80     }
 81 
 82     if(ServerProcess)
 83     {
 84         VL_SocketServer Server(vspTCP,L"8000",false);
 85         if(Server.IsSuccess())
 86         {
 87             Con.Write(L"Setup server success.\r\n");
 88             while(!LastSocketClient)
 89             {
 90                 VL_ServerSocket* Socket=Server.WaitForConnection();
 91                 if(Socket==0)
 92                 {
 93                     LastSocketClient=true;
 94                 }
 95                 else
 96                 {
 97                     Con.Write(L"Get a client.\r\n");
 98                     new SocketThread(Socket);
 99                 }
100             }
101             Con.Write(L"Server stops.\r\n");
102             Con.SetPauseOnExit(true);
103         }
104         else
105         {
106             Con.Write(L"Setup server fails.\r\n");
107             Con.SetPauseOnExit(true);
108         }
109     }
110     else
111     {
112         VL_ClientSocket Socket(vspTCP,L"127.0.0.1",L"8000");
113         if(Socket.Connect())
114         {
115             VUnicodeString Input;
116             VWChar Buffer[1024];
117             while(true)
118             {
119                 Con.Write(L"CLIENT>");
120                 Con.Read(Input);
121                 Socket.WriteData((VBuffer)Input.Buffer(),Input.Length()*sizeof(VWChar));
122                 if(Input==L"exit" || Input==L"last")
123                 {
124                     break;
125                 }
126                 memset(Buffer,0,sizeof(Buffer));
127                 if(Socket.ReadData((VBuffer)Buffer,sizeof(Buffer),false)>0)
128                 {
129                     Con.Write(Buffer);
130                     Con.Write(L"\r\n");
131                 }
132                 else
133                 {
134                     Con.Write(L"Connection fails.\r\n");
135                     Con.SetPauseOnExit(true);
136                     break;
137                 }
138             }
139         }
140         else
141         {
142             Con.Write(L"Connect to server fails.\r\n");
143             Con.SetPauseOnExit(true);
144         }
145     }
146 }

posted on 2008-08-01 06:23 陳梓瀚(vczh) 閱讀(1687) 評論(3)  編輯 收藏 引用

評論:
# re: 封裝了Socket 2008-08-01 20:09 | 空明流轉
很好,很強大,我沒看懂。  回復  更多評論
  
# re: 封裝了Socket 2008-08-01 22:43 | 李宜
牛  回復  更多評論
  
# re: 封裝了Socket 2008-08-01 23:55 | 陳梓瀚(vczh)
樓上跟我認識的一個人同名  回復  更多評論
  

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            蜜臀久久99精品久久久久久9 | 欧美在线视频日韩| 日韩视频在线一区| 欧美日韩一区自拍| 亚洲欧美日韩国产综合在线| 一区二区三区精品在线| 国产精品你懂得| 久久成人一区| 久久久一本精品99久久精品66| 国自产拍偷拍福利精品免费一| 久久久在线视频| 欧美岛国激情| 亚洲欧美一区二区三区在线 | 亚洲人精品午夜| 欧美日韩一区二区三区视频| 欧美一级夜夜爽| 久久视频一区| 亚洲综合首页| 久久精品国产久精国产爱| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲国产精品成人一区二区 | 国产精品久久久久婷婷| 久久婷婷蜜乳一本欲蜜臀| 欧美激情精品久久久久久黑人 | 亚洲一级黄色| 久久精品1区| 一区二区三区成人| 久久精品成人一区二区三区| 亚洲精品中文字| 午夜欧美精品久久久久久久| 亚洲国产另类久久精品| 中日韩午夜理伦电影免费| 狠狠色2019综合网| 一区二区三区视频在线| 极品日韩av| 亚洲影视综合| 99视频一区二区三区| 久久精品在线视频| 亚洲一区一卡| 欧美精品乱人伦久久久久久 | 午夜精品999| 欧美激情亚洲一区| 免费观看亚洲视频大全| 国产精品私房写真福利视频 | 欧美激情欧美激情在线五月| 国产久一道中文一区| 亚洲精品在线观看视频| 亚洲国产精品精华液2区45| 亚洲欧美经典视频| 亚洲一区在线看| 欧美日韩国产一区二区| 免费在线看成人av| 狠狠久久亚洲欧美专区| 亚洲免费一在线| 午夜视频久久久久久| 欧美色大人视频| 亚洲日本在线视频观看| 亚洲国产天堂久久综合| 久久精品色图| 久久米奇亚洲| 激情五月***国产精品| 午夜一区不卡| 久久成人精品| 国产日韩av在线播放| 新狼窝色av性久久久久久| 性做久久久久久久免费看| 国产精品久久久久久久久久久久久久 | 亚洲经典在线看| 美女图片一区二区| 欧美国产日韩一区| 亚洲欧洲一区二区在线观看| 免费成人激情视频| 亚洲国产一区二区三区在线播| 136国产福利精品导航| 老色鬼精品视频在线观看播放| 久久久噜噜噜久久中文字幕色伊伊| 国产精品一区二区久久精品| 亚洲欧美不卡| 久久精品国产一区二区电影| 国产一区二区三区黄| 久久一区二区三区av| 亚洲国产精品123| 99国产精品久久久久久久| 欧美高清你懂得| 99riav国产精品| 久久精品国产一区二区三区免费看| 国产精品你懂得| 久久久久久网址| 亚洲精品欧美日韩| 亚洲自拍三区| 在线看不卡av| 欧美日韩网站| 小嫩嫩精品导航| 亚洲国产美女| 亚洲欧美清纯在线制服| 国内久久婷婷综合| 欧美激情亚洲另类| 亚洲欧美日韩国产一区二区| 噜噜噜噜噜久久久久久91| 亚洲精品国产欧美| 国产精品视频第一区| 欧美中在线观看| 亚洲欧洲日本在线| 久久久久久久久蜜桃| 亚洲第一精品电影| 国产精品久久77777| 久久久.com| 夜夜嗨av一区二区三区中文字幕| 欧美一级淫片aaaaaaa视频| 在线精品福利| 国产精品女同互慰在线看| 久久免费视频网站| 亚洲一区二区三区中文字幕| 欧美国产视频在线观看| 久久精品国产久精国产爱 | 国产精品99一区二区| 久久免费视频网站| 亚洲欧美视频| 日韩视频在线一区二区三区| 免费日韩精品中文字幕视频在线| 亚洲一区二区四区| 亚洲人成网站在线播| 国内精品久久久久久影视8| 欧美日韩亚洲一区二区三区四区 | 亚洲成在线观看| 久久狠狠婷婷| 亚洲欧美成人| 国产精品99久久久久久人 | 国产性色一区二区| 国产精品成人一区二区| 欧美激情亚洲国产| 女仆av观看一区| 久久精品国产免费| 亚洲欧美一区二区原创| 在线视频一区观看| 99视频+国产日韩欧美| 最新国产成人av网站网址麻豆| 久久综合伊人77777尤物| 久久精品导航| 久久精品动漫| 久久精品一区二区国产| 久久精品国产精品亚洲| 久久激情视频免费观看| 欧美一级日韩一级| 久久se精品一区二区| 欧美在线视频一区二区| 亚洲男人第一网站| 午夜视频久久久| 久久激情视频久久| 久久久美女艺术照精彩视频福利播放| 午夜亚洲福利| 欧美中文字幕在线| 久久夜色撩人精品| 欧美高清视频一区二区三区在线观看| 久久视频这里只有精品| 欧美ab在线视频| 亚洲黑丝一区二区| 中国成人黄色视屏| 午夜精品久久久久久久久久久久久 | 欧美精品成人91久久久久久久| 麻豆久久精品| 欧美激情一级片一区二区| 欧美日本一区| 国产精品人人爽人人做我的可爱 | 欧美午夜片在线观看| 欧美午夜一区| 国产午夜精品麻豆| 亚洲成人原创| 日韩视频永久免费| 亚洲男人av电影| 久久久另类综合| 亚洲国产成人av在线| 日韩五码在线| 新狼窝色av性久久久久久| 老牛嫩草一区二区三区日本| 欧美日韩1080p| 国产亚洲美州欧州综合国| 亚洲国产综合在线看不卡| 在线视频你懂得一区| 久久精品99国产精品日本| 欧美电影免费观看高清| 一区二区三区**美女毛片| 久久精品二区亚洲w码| 欧美理论大片| 一区二区三区自拍| 亚洲一区久久| 欧美激情亚洲国产| 午夜久久久久久久久久一区二区| 久久综合中文字幕| 国产精品久久久久久久久久久久久久 | 亚洲视频一起| 欧美v国产在线一区二区三区| 欧美午夜电影网| 91久久久久久久久| 久久久久久网站| 亚洲自拍16p| 欧美日韩美女在线| 亚洲国产欧美在线人成| 欧美一区网站| 一区二区久久|