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

隨筆-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>
            亚洲免费大片| 亚洲欧洲精品一区二区三区| 亚洲专区在线| 亚洲香蕉网站| 国产精品自拍一区| 久久精品在线| 久久中文字幕导航| 亚洲毛片一区| 亚洲天堂av在线免费| 国产日韩精品在线播放| 久久久久国产免费免费| 玖玖精品视频| 亚洲夜间福利| 久久精品国产99| 亚洲精品免费观看| 亚洲一区二区精品| 在线不卡欧美| 亚洲天堂成人在线观看| 国产综合一区二区| 91久久极品少妇xxxxⅹ软件| 欧美日韩一区二区三区免费| 欧美伊人久久久久久久久影院 | 欧美aⅴ一区二区三区视频| 欧美va天堂在线| 亚洲尤物在线视频观看| 久久精品国产综合精品| 夜夜爽www精品| 西瓜成人精品人成网站| 亚洲日本va午夜在线影院| 夜夜嗨av一区二区三区网页| 狠狠色狠狠色综合系列| 亚洲精品午夜精品| 好吊视频一区二区三区四区| 亚洲精品一区二区网址| 国产一区二区三区奇米久涩| 日韩一区二区精品葵司在线| 国产亚洲二区| 亚洲最新合集| 亚洲欧洲一区二区在线播放| 性欧美大战久久久久久久免费观看 | 国产精品羞羞答答xxdd| 欧美不卡一卡二卡免费版| 国产精品视频| 亚洲精品影院| 最近中文字幕mv在线一区二区三区四区| 亚洲私人影院在线观看| 日韩亚洲一区在线播放| 久久久视频精品| 欧美在线999| 欧美视频在线播放| 亚洲国产精品久久久久婷婷老年 | 欧美日韩三级视频| 欧美成人dvd在线视频| 国产日韩欧美夫妻视频在线观看| 亚洲精品老司机| 亚洲国产老妈| 久久综合狠狠| 免费欧美网站| 黄色成人av网站| 欧美中文字幕在线观看| 欧美一区二区三区免费在线看| 欧美日韩三级| 一区二区三区视频在线| 99国产精品一区| 欧美乱大交xxxxx| 亚洲第一福利在线观看| 亚洲国产婷婷香蕉久久久久久99 | 国产精品第13页| 亚洲美洲欧洲综合国产一区| 亚洲精品老司机| 欧美激情第五页| 99视频一区二区| 亚洲欧美伊人| 国产欧美在线| 小处雏高清一区二区三区 | 欧美一区二视频在线免费观看| 国产精品99一区二区| 99在线精品观看| 亚洲欧美国产高清| 国产日产欧美精品| 久久久久久一区二区三区| 麻豆91精品| 欧美精品一卡| 日韩一区二区免费看| 欧美激情网站在线观看| 最新中文字幕亚洲| 一区二区三区偷拍| 国产精品综合| 久久综合五月天婷婷伊人| 亚洲国产日韩欧美在线99| 亚洲免费观看| 国产精品视频| 免费人成网站在线观看欧美高清| 亚洲国产欧美日韩| 亚洲图片在线观看| 国产欧美精品xxxx另类| 久久一区二区三区国产精品| 日韩亚洲不卡在线| 久久久久9999亚洲精品| 亚洲欧洲一区二区三区久久| 欧美午夜在线视频| 久久久久久久一区| 99国产精品国产精品久久| 久久国产精品网站| 99国内精品久久| 国产日韩精品视频一区| 女人香蕉久久**毛片精品| 亚洲视频在线观看免费| 欧美xart系列高清| 久久福利毛片| 一级成人国产| 亚洲国产老妈| 国产伪娘ts一区| 欧美日韩aaaaa| 久久精品国产免费看久久精品| 亚洲精品乱码视频| 久久深夜福利| 午夜一区在线| 99re热这里只有精品视频| 国内一区二区三区在线视频| 欧美日韩国产成人高清视频| 久久精品电影| 午夜影院日韩| 一二三区精品| 亚洲日本aⅴ片在线观看香蕉| 玖玖玖国产精品| 久久精品国产69国产精品亚洲| 夜夜嗨av一区二区三区免费区| 在线播放豆国产99亚洲| 国内成人精品一区| 国产精品一二三四区| 欧美午夜视频在线观看| 欧美日本韩国一区| 欧美成人首页| 久久综合精品国产一区二区三区| 午夜视频精品| 亚洲欧美精品suv| 一区二区三区精品| av不卡在线看| 一区二区欧美日韩| 一区二区精品在线| 一区二区激情| 亚洲一区免费| 亚洲欧美日韩一区二区三区在线观看 | 亚洲线精品一区二区三区八戒| 亚洲精品资源| 一区二区av在线| 在线亚洲免费| 午夜精品国产更新| 性做久久久久久久免费看| 亚洲欧洲99久久| 久久成人18免费网站| 久久精品国产欧美激情| 久久综合色综合88| 免费欧美网站| 亚洲精选大片| 制服丝袜亚洲播放| 午夜精品久久久久久久99黑人| 欧美一区二区三区四区高清| 久久精品30| 欧美福利在线| 欧美天天视频| 国产一区二区高清不卡| 一区在线播放| 日韩香蕉视频| 欧美一区1区三区3区公司| 久久精品123| 欧美激情在线免费观看| 亚洲精选中文字幕| 午夜电影亚洲| 免费看的黄色欧美网站| 欧美日韩国产高清| 国产在线观看精品一区二区三区 | 欧美午夜精品理论片a级大开眼界| 欧美婷婷在线| 国外视频精品毛片| 亚洲全部视频| 亚洲男女自偷自拍图片另类| 欧美在线观看视频一区二区三区 | 亚洲国产精品黑人久久久| 一区二区精品在线观看| 久久精品亚洲一区| 欧美三级电影大全| 黄色一区二区在线| 这里只有精品电影| 久久字幕精品一区| 在线亚洲精品福利网址导航| 久久精品中文| 欧美性做爰毛片| 亚洲激情六月丁香| 欧美一区二区高清| 亚洲精品视频免费在线观看| 久久久www成人免费精品| 欧美日韩国产在线一区| 一区在线观看| 久久久www免费人成黑人精品| 91久久精品国产91性色tv| 欧美在线啊v| 国产精品久久久久999| 亚洲三级国产|