Time of Update: 2018-12-06
著作權聲明:轉載時請以超連結形式標明文章原始出處和作者資訊及本聲明http://eastsun.blogbus.com/logs/7873846.htmlSelect在Socket編程中還是比較重要的,可是對於初學Socket的人來說都不太愛用Select寫程式,他們只是習慣寫諸如connect、accept、recv或recvfrom這樣的阻塞程式(所謂阻塞方式block,顧名思義,就是進程或是線程執行到這些函數時必須等待某個事件的發生,如果事件沒有發生,進程或線程就被阻塞,函數不能立即返回)
Time of Update: 2018-12-06
五、MFC對多線程編程的支援 MFC中有兩類線程,分別稱之為工作者線程和使用介面執行緒。二者的主要區別在於工作者線程沒有訊息迴圈,而使用介面執行緒有自己的訊息佇列和訊息迴圈。 工作者線程沒有訊息機制,通常用來執行後台計算和維護任務,如冗長的計算過程,印表機的後台列印等。使用介面執行緒一般用於處理獨立於其他線程執行之外的使用者輸入,響應使用者及系統所產生的事件和訊息等。但對於Win32的API編程而言,這兩種線程是沒有區別的,它們都只需線程的啟動地址即可啟動線程來執行任務。 在MFC中,一般
Time of Update: 2018-12-06
要弄懂這個問題,首先你得知道靜態和動態指的是什麼。個人覺得卡耐基上的解釋很經典: “The word static refers to things that happen at compile time and link time when the program is constructed—as opposed to load time or run time when the program is actually started.” “The term dynamic
Time of Update: 2018-12-06
沒啥技術含量,只不過是在沒事幹,就把這個也記上,Windows下好像有這個api函數,但是在wince下用不了,所以還得自己封裝一個。大體代碼如下:/*the seconds of round year = 3600*24*366 */#define SECONDOFROUNDYEAR 31622400/*the seconds of general year = 3600*24*365 */#define SECONDOFYEAR 31536000unsigned int
Time of Update: 2018-12-06
原型 int select(int nfds,fd_set* readfds,fd_set* writefds,fd_set* exceptfds,const struct timeval* timeout); 第一個參數 nfds在linux下的描述:指定測試的描述符最大值,在0到nfds都會被測試,到了windows下: Ignored. The nfds parameter is included only for compatibility with Berkeley sockets.
Time of Update: 2018-12-06
From Wikipedia, the free encyclopediaThis is a list of Mobile Country Codes (MCCs) defined in ITU E.212 ("Land Mobile Numbering Plan") for use in identifying mobile stations in wireless telephone networks, particularly GSM and UMTS networks. An MCC
Time of Update: 2018-12-06
1.sizeof操作符的結果類型是size_t,它在標頭檔中typedef為unsigned int類型。該類型保證能容納實現所建立的最大對象的位元組大小。 2.sizeof是算符,strlen是函數。 3.sizeof可以用類型做參數,strlen只能用char*做參數,且必須是以''\0''結尾的。sizeof還可以用函數做參數,比如: short f();printf("%d\n",
Time of Update: 2018-12-06
memset目錄[隱藏]功 能用 法程式例memset函數詳細說明 [編輯本段]功 能 將s所指向的某一塊記憶體中的每個位元組的內容全部設定為ch指定的ASCII值, 塊的大小由第三個參數指定,這個函數通常為新申請的記憶體做初始化工作, 其傳回值為指向S的指標。[編輯本段]用 法 void *memset(void *s, int ch, unsigned n);[編輯本段]程式例 #include <string.h> #include
Time of Update: 2018-12-06
BOOL TransmitFile( SOCKET hSocket, HANDLE hFile, DWORD nNumberOfBytesToWrite, DWORD nNumberOfBytesPerSend, LPOVERLAPPED lpOverlapped,
Time of Update: 2018-12-06
這個函數用來產生一個隨機連接埠,可以產生一個沒有被佔用的連接埠。//產生隨機連接埠DWORD GenerateRandomPort(){int nStartPort = 1000;int nEndPort = 10000;FD_SET fd_Write;SOCKET s;struct sockaddr_in server;struct timeval tp = { 0 };int ret = 0;unsigned long mode = 1; tp.tv_sec = 0;
Time of Update: 2018-12-06
答案一:1.非同步傳輸 通常,非同步傳輸是以字元為傳輸單位,每個字元都要附加 1 位起始位和 1 位停止位,以標記一個字元的開始和結束,並以此實現資料轉送同步。所謂非同步傳輸是指字元與字元(一個字元結束到下一個字元開始)之間的時間間隔是可變的,並不需要嚴格地限制它們的時間關係。起始位對應於二進位值 0,以低電平表示,佔用 1 位寬度。停止位對應於二進位值 1,以高電平表示,佔用 1~2 位寬度。一個字元佔用 5~8位,具體取決於資料所採用的字元集。例如,電報碼字元為 5 位、ASCII碼字元為
Time of Update: 2018-12-06
用AfxBeginThread啟動線程,線程的執行函數有兩種定義的方法:<!--[if !supportLists]-->1. <!--[endif]-->全域函數:UINT threadMessageBoxAdapter( LPVOID lParam );<!--[if !supportLists]-->2. <!--[endif]-->靜態成員函數:static UINT threadMessageBoxAdapter(
Time of Update: 2018-12-06
在實現繪圖的過程中,顯示的圖形總是會閃爍,筆者曾經被這個問題折磨了好久,通過向高手請教,搜尋資料,問題基本解決,現將文檔整理出來以供大家參考.1.顯示的圖形為什麼會閃爍我們的繪圖過程大多放在OnDraw或者OnPaint函數中,OnDraw在進行螢幕顯示時是由OnPaint進行調用的。當視窗由於任何原因需要重 繪時,總是先用背景色將顯示區清除,然後才調用OnPaint,而背景色往往與繪圖內容反差很大,這樣在短時間內背景色與顯示圖形的交替出現,使得顯示窗 口看起來在閃。如果將背景刷設定成NULL,
Time of Update: 2018-12-06
如何利用socket進行HTTP訪問 平常我們要訪問某個URL一般都是通過瀏覽器進行:提交一個URL請求後,瀏覽器將請求發向目標伺服器或者Proxy 伺服器,目標伺服器或者Proxy 伺服器返回我們所需要的資料,瀏覽器接收到這些資料後儲存成檔案並進行顯示。 下面我們看看如何自己利用winsock2.h中的介面來實現這個功能?為了簡化問題,作以下假設: 通過Proxy 伺服器進行HTTP訪問,這樣就省去了對URL進行DNS解析的步驟,假設Proxy 伺服器的地址為:192.168.0.1:808。
Time of Update: 2018-12-06
//檔案傳送線程//伺服器傳送檔案,用戶端傳送檔案訊息UINT threadSendFile(LPVOID pvar){ CDlgSendMessage *pDlg = (CDlgSendMessage *) pvar;CFile m_fSendfile;m_fSendfile.Close();if (!m_fSendfile.Open(pDlg->m_sendfilepath, CFile::modeRead | CFile::typeBinary)){
Time of Update: 2018-12-06
作者:Future Studio.徐景周著作權:徐景周 在放大或縮小映像時,如何能最好的保持映像原態比例來顯示呢?下面提供一個涵數可幫你來實現,調用它後,返回的矩形地區既為最佳顯示映像大小。 涵數中的第一個參數rcScreen為映像要被顯示的矩形大小,第二個參數sizePicture為映像自身大小,第三個參數bCenter為是否置中顯示,傳回值CRect既為映像最佳顯示大小。涵數如下所示:CRect RectSizeWithConstantRatio( CRect*
Time of Update: 2018-12-06
http://www.qqread.com/vc/i502192200.html ADO提供了一組非常簡單,將一般通用的資料訪問細節進行封裝的對象。由於ODBC資料來源也提供了一般的OLE DB Privider,所以ADO不僅可以應用自身的OLE DB Privider,而且還可以應用所有的ODBC驅動程式。關於OLE
Time of Update: 2018-12-06
訪問應用程式的其它類 獲得CWinApp: -在CMainFrame,CChildFrame,CDocument,CView中直接調用AfxGetApp()或用theApp -在其它類中只能用AfxGetApp() 獲得CMainFrame: -在CMinApp中用AfxGetMainWnd()或者m_pMainWnd -在CChildFrame中可用GetParentFrame() -在其它類中用AfxGetMainWnd() 獲得CChildFrame: -在CView中用GetParent
Time of Update: 2018-12-06
http://hi.baidu.com/leonardhuang/blog/item/d5fa133f814777cc9e3d62ee.html 最近寫一個程式,需要在自己建立的背景工作執行緒中更新視窗資料。在使用UpdataData(false)來實現時,總是報錯,在網上搜了一下,才知道在背景工作執行緒中不能使用UpdateData來更新主線程中的資料。介面的東西,最好就是用主線程(介面線程)去執行相應的操作。要想在子線程(背景工作執行緒)裡執行介面線程的操作,最好是向主線程發送訊息。因為M
Time of Update: 2018-12-06
http://www.yuanma.org/data/2006/0605/article_641.htm 我剛開始接觸回調時, 也是一團霧水.很多人解釋這個問題時, 總是拿API來舉例子, 本來菜鳥最懼怕的就是API, ^_^. 回調跟API沒有必然聯絡. 其實回調就是一種利用函數指標進行函數調用的過程. 為什麼要用回調呢?比如我要寫一個子模組給你用, 來接收遠程socket發來的命令.當我接收到命令後, 需要調用你的主模組的函數,