資源描述:
《基于tcp下多線程winsock編程new》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、基于TCP下多線程基于TCP下多線程WINSOCK編程Multi-threadWinsockProgrammingBasedonTCPWINSOCK張磊1、2王貞化2ZhangLeiWangZhenhua(1.蘇州大學(xué)計算機科學(xué)與技術(shù)學(xué)院,蘇州215006;2.河南師范大學(xué)計算機與信息技術(shù)學(xué)院,新鄉(xiāng)453007)編程(1.SchoolofComputerScience&Technology,SoochowUniversity,Shuzhou215006;2.CollegeofComputer&Inform
2、ationTechnology,HenanNormalUniversity,Xinxiang453007)摘要:本文首先分析了在WINSOCK下具體網(wǎng)絡(luò)編程過程中的實際需求,利用線程創(chuàng)建函數(shù)編寫了服務(wù)器對多個客戶同時響應(yīng)的例子,即在每一個客戶提出請求后,主程序調(diào)用CreateThread子函數(shù)創(chuàng)建一個線程去服務(wù)客戶,而主程序返回去等待下一個客戶請求,從而實現(xiàn)多個客戶與服務(wù)器間的通信。關(guān)鍵詞:套接字;傳輸控制協(xié)議;多線程;客戶/服務(wù)器中圖分類號:TP393.04文獻標識碼:A文章編號:1671-4792-(
3、2006)7-0030-03Abstract:Firstly,thispaperanalysisactualdemandsinconcretenetworkprogrammingprocessatWinsock,compilestheexamplethattheserverprogramrespondstomanycustomersatthesametimebyusingtheCreateThreadfunction.Namelyproposedtherequestaftereachcustomer,th
4、emasterprogramadjuststheCreateThreadsub-functiontofoundathreadtoserveeachcustomer.Thenthemasterprogramreturnstowaitnextcustomertorequest,andsorealizecorrespondencebetweenmanycustomersandtheserver.Keywords:Sockets;TCP;Multi-thread;Client/Server0引言來討論,如圖一所示
5、。進程通信的概念最初來源于單機系統(tǒng),僅限于在本機進程之間通信[1]。網(wǎng)間進程通信要解決的是不同主機進程間的相互通信問題(可把同機進程通信看作是其中的特例),為此,首先要解決的是網(wǎng)間進程標識問題。同一主機上,不同進程可用進程號(processID)唯一標識[2],但在網(wǎng)絡(luò)環(huán)境圖一五層網(wǎng)絡(luò)協(xié)議下,各主機獨立分配的進程號不能唯一標識該進程。例如,按照OSI七層協(xié)議的描述,傳輸層與網(wǎng)絡(luò)層在功能上的主機A賦予某進程號5,在B機中也可以存在5號進程,因此,最大區(qū)別是傳輸層提供進程通信能力。從這個意義上講,網(wǎng)“5號進程
6、”這句話就沒有意義了。其次,操作系統(tǒng)支持的網(wǎng)絡(luò)通信的最終地址就不僅僅是主機地址了,還包括可以描述絡(luò)協(xié)議眾多,不同協(xié)議的工作方式不同,地址格式也不同。進程的某種標識符。為此,TCP/IP協(xié)議提出了協(xié)議端口因此,網(wǎng)間進程通信還要解決多重協(xié)議的識別問題。(protocolport,簡稱端口)的概念,用于標識通信的進程。我們引進了套接字,為了通訊時不發(fā)生混亂,一個TCP1.2端口連接由它的兩個端點來標志,而每個端點又是由IP地址和端端口是一種抽象的軟件結(jié)構(gòu)(包括一些數(shù)據(jù)結(jié)構(gòu)和I/O口號決定的。因此,TCP使用“連
7、接”作為最基本的抽象,同緩沖區(qū))。應(yīng)用程序(即進程)通過系統(tǒng)調(diào)用與某端口建立時將TCP連接的端點稱為插口(SOCKET),即套接字。本文中連接(binding)后,傳輸層傳給該端口的數(shù)據(jù)都被相應(yīng)進SOCKET指IP地址與端口號的組合[3]。程所接收,相應(yīng)進程發(fā)給傳輸層的數(shù)據(jù)都通過該端口輸出。1根據(jù)網(wǎng)絡(luò)協(xié)議進行模板設(shè)計我們所用的Port便是運輸層和應(yīng)用層之間的一個接口,1.1網(wǎng)絡(luò)的分層協(xié)議從某種意義上講,端口的作用就是標志應(yīng)用層的進程。網(wǎng)絡(luò)現(xiàn)代網(wǎng)絡(luò)中,通信雙方必須使用相同的協(xié)議才可以通中的每臺主機必須擁有地
8、址才可以通信,網(wǎng)絡(luò)中主機的地址信,而協(xié)議的復(fù)雜性導(dǎo)致了協(xié)議分層。由于OSI的七層協(xié)議不能重復(fù),IP地址是TCP/IP協(xié)議的地址,它是網(wǎng)絡(luò)層的接體系結(jié)構(gòu)既復(fù)雜又不實用,而TCP/IP協(xié)議是一個四層的體系口,在WindowsOS中通常采用32位,點分十進制表示[5]。結(jié)構(gòu),因為最下面的網(wǎng)絡(luò)接口層并沒有什么內(nèi)容,因此我們?nèi)纾?92.168.0.1。才用一個折中的辦法,即采用一種具有五層協(xié)議的體系結(jié)構(gòu)51科技廣場2006.7PORT(