導航:首頁 > 編程語言 > vc網路編程多線程

vc網路編程多線程

發布時間:2022-08-04 14:37:12

『壹』 VC 網路編程新手 求助關於客戶端自動連接

首先,樓主要知道,如果伺服器端沒有開啟,即伺服器沒有調用listen&accept,對connect的調用會導致這個函數一直不會返回(當然最終會返回,默認時間很長),但樓主是在OnTimer中調用connect的,WM_TIMER設為1秒是不合理的。

可以這樣做對話框初始化設置SetTimer;
到時後,調用OnTimer,在OnTimer中先殺死Timer,然後再創建新的線程進行socket的處理,最後如果connect返回失敗,可以在線程返回前再次SetTimer,這樣做比較好。

另外,考慮到在新線程中的connect時,可能會關閉對話框,因此應該在OnClose中進行一些處理,如closesocket,這樣可以強迫connect返回。這樣可以使窗口被關閉後進程得體的被終止。

最後還要返回到新線程中對connect進行一些處理,必須讓connect知道調用失敗是因為連接超時還是因為SOCKET被強行關閉。因為如果是連接超時,那就可以再次SetTimer以便在下一秒再試著連接。如果是SOCKET被關閉了,connect不應該再次SetTimer,因為進程要退出了。代碼如下:
ThreadProc() {
...
if (SOCKET_ERROR == connect(...)) {
if (WSAEINTR == WSAGetLastError()) {
//SOCKET被強行關閉導致錯誤代碼為WSAEINTR
...
} else {
SetTimer(hwnd, 1, 1000, NULL);
}
}
...
}

注意,窗口被關閉時不能使用WSACleanup,因為connect後要使用WSAGetLastError,WSACleanup的調用要慎重,如在CWinApp::ExitInstance中。還有樓主在connect時第一個參數s是什麼東西?是不是應該改為m_socket? 在OnTimer中調用不會返回的connect會使窗口界面出現「假死」.永遠不要讓窗口處理函數長時間的不能返回。如果要進行長時間的處理,應該另外開線程進行單獨處理。

『貳』 C語言基礎網路編程求助 如何實現多線程

#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>

void*thread(void*);
int client[5],i;

main()
{
int serverSocket= socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in server_addr;
struct sockaddr_in clientAddr;
int addr_len = sizeof(clientAddr);
//線程
pthread_t id;
pthread_attr_t attr;
pthread_attr_init(&attr);////////////////////////////////////////////////
pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
//創建地址
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family =AF_INET;
server_addr.sin_port = htons(5555);
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
//綁定
bind(serverSocket,(struct sockaddr *)&server_addr,sizeof(server_addr));
listen(serverSocket,5);
for(i=0;i<5;i++)
{
client[i] = accept(serverSocket,(struct sockaddr *)&clientAddr,(socklen_t*)&addr_len);
pthread_create(&id,&attr,thread,(void *)&client[i]);/////////////////////////////////
pthread_join(id,NULL);
}
close(serverSocket);/////////////////////////
return 0;
}
void* thread(void* argv)
{
char buffer[200];
int a=i;
int s_c = *((int*)argv);///////////////////
while(1)
{
int n = recv(s_c,buffer,sizeof(buffer),0);
if(n > 0)
printf("客戶端發過來的 : %s\n",buffer);
else
return;
}
close(s_c);
}

『叄』 VC多線程網路編程 高手請進

不要在工作線程里更新界面,可以通過發送消息到UI來進行更新就是這句:pdlg->m_edit.SetWindowText(s);

『肆』 推薦一本講C#多線程編程的好書,或者一部好的視頻地址

先從最簡明扼要的入手,以下就是:

《孫鑫VC++ 20集全》[RMVB]

CD15:多線程程序的編寫,多線程應用中容易出現的問題。互斥對象的講解,如何採用互斥對象來實現多線程的同步。如何利用命名互斥對象保證應用程序只有一個實例運行。應用多線程編寫網路聊天室程序。

CD16:事件內核對象、關鍵代碼段(臨界區)的講解,以及在多線程同步中的應用。在Windows下編寫基於消息的網路應用程序,掌握阻塞與非阻塞網路程序的編寫,理解在Windows平台下,採用非同步選擇機制可以提高網路應用程序的性能。

『伍』 有關C++的一些特性,比如網路編程,多線程編程

類的封裝性、 繼承性等有關對象的特性,使程序代碼只需一次編譯,然後 通過C#目前主要是應用在網路編程上,其他領域比如資料庫、窗體編程,都逐漸在增大

『陸』 想接觸C++多線程編程,需要從哪方面入手,有沒有

多線程編程的難點不在於鎖,正常人看一下操作系統再寫幾個線程demo就可以基本理解了。對於C++而言,甚至連編寫線程安全的類也不是難事。只需要用同步原語來保持對共享資源的訪問即可。
我個人覺得最需要的就是實戰,寫Demo誰都會寫。同步原語就那麼幾個,信號量,互斥量,條件變數等。但是怎麼用呢?當你從點擊星際爭霸到和玩家匹配進行游戲,這當中程序是怎麼運行的?
事件驅動是怎麼驅動的?
就目前來說,我遇到的困難不是線程的死鎖,而是對並發模型的理解。Actor,Reactor模式等。這些東西不實戰,個人空想理解起來會吃力。
推薦《Linux多線程服務端編程》,這本書給我的觀點是實戰性很強,而且涉及面也比較廣。後幾章提到了分布式系統和作者對C++的思考以及STL algotrithm的運用。如作者所說:「對於面向對象,封裝式必須的;但繼承和多態耦合性太強,很不劃算」我就很贊同

同時展示了一個用C++開發的網路庫,不過雖然看了這本書,我還是沒找到為什麼要用C++的理由。我認為C的確可以很好地解決問題。C++的話就RAII算是真的有益處。
但讀之前你需要有一定的C++和操作系統基礎。當時買這本書的時候還覺得有點心疼,現在看看物超所值。(我那本CSAPP就翻了一章=-=)
總結:看現代操作系統第二章,同時結合C++11的thread庫寫經典Demo(生產者消費者問題等)
花兩周左右。剩下的就是實戰。如果不實戰,你還是不知道這些東西在生產環境中是怎麼使用的。
可以結合muo skynet等開源網路框架學習並發模型。

『柒』 C++多線程編程問題

多線程工作可以提高解決問題的速度

你舉得例子可以多線程實現,但是更多的人稱之為分布式計算
多線程主要是創建多個線程,每個線程負責自己的事情,每個線程只對主線程負責
至於解決問題的速度應該可以達到提高一半,但是你要注意資源的互斥,互斥處理不好估計會事倍功半

『捌』 學習C++多線程和C++網路編程需要看哪些書

C專家編程
作者:PETER VAN DER LINDEN
出版:人民郵電 出版日期:2010年05月
《C專家編程》展示了最優秀的C程序員所使用的編碼技巧,並專門開辟了一章對C++的基礎知識進行了介紹。書中C的歷史、語言特性、聲明、數組、指針、鏈接、運行時、內存以及如何進一步學習C++等問題進行了細致的講解和深入的分析。全書擷取幾十個實例進行講解,對C程序員具有非常高的實用價值。本書可以幫助有一定經驗的C程序員成為C編程方面的專家,對於具備相當的C語言基礎的程序員,本書可以幫助他們站在C的高度了解和學習C++。

Visual C++黑客編程揭秘與防範
作者:梁洋洋 編著
出版:人民郵電出版社 出版日期:2009年07月
本書全面介紹了在VisualC++環境中,使用WindowsSocket及API 開發各類防範黑客軟體及安全防護工具的編程實現方法,深入剖析了目前熱門的黑客編程技術。本書通過基礎篇、提高篇、綜合篇和拓展篇這種循序漸進地方式,向讀者介紹了防範黑客攻擊程序、安全防護工具、遠程式控制制軟體和網路安全管理軟體的原理及具體編程實現方法。 本書內容豐富,實用性和實戰性強,不僅包括讀者必備的防範黑客的編程知識,更深入闡述了網路編程方面的高級技術。不僅適用於黑客程序開發,在讀者掌握了本書介紹的各種編程技術後,還

C#網路編程技術教程
作者:金華,華進 編著
出版:人民郵電 出版日期:2009年01月
本書是一本系統介紹C# 網路編程技術的教材,全書共11章,由兩部分組成。第1部分(第1~5章)為基礎知識,內容包括VisualC#.NET集成開發環境、C#語言的基礎知識、面向對象的程序設計、C#的Windows編程方法、C#的常用數據類、網路編程的基本概念、網路套接字編程以及多線程編程的方法概述等。第2部分 (第6~11章)介紹網路編程的幾個常用領域,內容包括TCP/UDP編程、FTP 編程、電子郵件協議編程、HTTP編程、WebService編程以及密碼術網路編程等。

從新華書店文軒網上搜索的,供參考

『玖』 TCP MFC對話框C++網路編程多線程編程怎麼實現呢

你在阻塞的代碼處使用_beginthread創建一個線程來執行相關代碼不就可以了。

閱讀全文

與vc網路編程多線程相關的資料

熱點內容
閩政通無法請求伺服器是什麼 瀏覽:48
怎麼做積木解壓神器 瀏覽:203
王者榮耀解壓玩具抽獎 瀏覽:49
12位是由啥加密的 瀏覽:868
程序員編迷你世界代碼 瀏覽:895
php取現在時間 瀏覽:246
單片機高吸收 瀏覽:427
怎麼區分五代頭是不是加密噴頭 瀏覽:244
hunt測試伺服器是什麼意思 瀏覽:510
2013程序員考試 瀏覽:641
畢業論文是pdf 瀏覽:736
伺服器跑網心雲劃算嗎 瀏覽:471
單片機定時器計數初值的計算公式 瀏覽:801
win7控制台命令 瀏覽:567
貓咪成年app怎麼升級 瀏覽:692
360有沒有加密軟體 瀏覽:315
清除cisco交換機配置命令 瀏覽:751
華為刪除交換機配置命令 瀏覽:473
shell打包命令 瀏覽:827
加密狗插上輸不了密碼 瀏覽:187