資源描述:
《socket編程指南及示例程序vc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、轉(zhuǎn)自一位大蝦的BLOG,代碼的壓縮包位置是http://www.blogjava.net/Files/wxb_nudt/socket_src.rar包括六個UDP和TCP發(fā)送接受的cpp文件,一個基于MFC的局域網(wǎng)聊天小工具工程,和此小工具的所有運行時庫、資源和執(zhí)行程序。1前言在一些常用的編程技術(shù)中,Socket網(wǎng)絡(luò)編程可以說是最簡單的一種。而且Socket編程需要的基礎(chǔ)知識很少,適合初學(xué)者學(xué)習(xí)網(wǎng)絡(luò)編程。目前支持網(wǎng)絡(luò)傳輸?shù)募夹g(shù)、語言和工具繁多,但是大部分都是基于Socket開發(fā)的,雖說這些“高級”的網(wǎng)絡(luò)技術(shù)屏蔽了大部分底層實現(xiàn),號稱能極大程度的簡化開發(fā),而事實
2、上如果你沒有一點Socket基礎(chǔ),要理解和應(yīng)用這些技術(shù)還是很困難的,而且會讓你成為“半瓢水”。深有感觸的是當(dāng)年我學(xué)習(xí)CORBA的時候,由于當(dāng)時各方面的基礎(chǔ)薄弱,整整啃了半年書,最終還是一頭霧水。如果現(xiàn)在讓我?guī)б粋€人學(xué)CORBA,我一定會安排好順序:首先弄清C++語法;然后是VC編譯環(huán)境或者nmake的用法;接下來學(xué)習(xí)一些網(wǎng)絡(luò)基礎(chǔ)知識;然后是Socket編程;這些大概要花費3、4個月。有了這些基礎(chǔ)學(xué)習(xí)CORBA一周即可弄懂,兩個月就可以基于CORBA進行開發(fā)了。好了,說了半天其實中心思想就一個,Socket很簡單,很好學(xué)!如果你會C++或者JAVA,又懂一點點網(wǎng)
3、絡(luò)基礎(chǔ)如TCP和UDP的機制,那么你看完本文就可以熟練進行Socket開發(fā)了。2????????Socket簡介(全文摘抄)(本節(jié)內(nèi)容全部抄自網(wǎng)絡(luò),不保證正確性,有興趣的可以看看!)80年代初,美國政府的高級研究工程機構(gòu)(ARPA)給加利福尼亞大學(xué)Berkeley分校提供了資金,讓他們在UNIX操作系統(tǒng)下實現(xiàn)TCP/IP協(xié)議。在這個項目中,研究人員為TCP/IP網(wǎng)絡(luò)通信開發(fā)了一個API(應(yīng)用程序接口)。這個API稱為Socket接口(套接字)。今天,SOCKET接口是TCP/IP網(wǎng)絡(luò)最為通用的API,也是在INTERNET上進行應(yīng)用開發(fā)最為通用的API。90年
4、代初,由Microsoft聯(lián)合了其他幾家公司共同制定了一套WINDOWS下的網(wǎng)絡(luò)編程接口,即WindowsSockets規(guī)范。它是BerkeleySockets的重要擴充,主要是增加了一些異步函數(shù),并增加了符合Windows消息驅(qū)動特性的網(wǎng)絡(luò)事件異步選擇機制。WINDOWSSOCKETS規(guī)范是一套開放的、支持多種協(xié)議的Windows下的網(wǎng)絡(luò)編程接口。從1991年的1.0版到1995年的2.0.8版,經(jīng)過不斷完善并在Intel、Microsoft、Sun、SGI、Informix、Novell等公司的全力支持下,已成為Windows網(wǎng)絡(luò)編程的事實上的標(biāo)準(zhǔn)。目前,
5、在實際應(yīng)用中的WINDOWSSOKCETS規(guī)范主要有1.1版和2.0版。兩者的最重要區(qū)別是1.1版只支持TCP/IP協(xié)議,而2.0版可以支持多協(xié)議。2.0版有良好的向后兼容性,任何使用1.1版的源代碼,二進制文件,應(yīng)用程序都可以不加修改地在2.0規(guī)范下使用。SOCKET實際在計算機中提供了一個通信端口,可以通過這個端口與任何一個具有SOCKET接口的計算機通信。應(yīng)用程序在網(wǎng)絡(luò)上傳輸,接收的信息都通過這個SOCKET接口來實現(xiàn)。在應(yīng)用開發(fā)中就像使用文件句柄一樣,可以對SOCKET句柄進行讀,寫操作。3????????再說兩句網(wǎng)上很多文章對于Socket的來龍去脈
6、有如教科書一般的精準(zhǔn)。但是涉及具體編程技術(shù)就往往被VC等集成開發(fā)環(huán)境所毒害了,把WindowsSDK、MFC、Socket、多線程、DLL以及編譯鏈接等等技術(shù)攪合在一起煮成一鍋夾生飯。既然要學(xué)習(xí)Socket,就應(yīng)該用最簡單直白的方式把Socket的幾個使用要點講出來。我認(rèn)為程序員最關(guān)心的有以下幾點,按照優(yōu)先級排列如下:1.????????Socket的機制是什么?2.????????用C/C++寫Socket需要什么頭文件、庫文件、DLL,它們可以由誰提供,安裝后一般處于系統(tǒng)的哪個文件夾內(nèi)?3.????????編寫Socket程序需要的編程基礎(chǔ)是什么?4.??
7、??????Socket庫內(nèi)最重要的幾個函數(shù)和數(shù)據(jù)類型是什么?5.????????兩個最簡單的例子程序;6.????????一個貼近應(yīng)用的稍微復(fù)雜的Socket應(yīng)用程序。我將一一講述這些要點,并給出從簡到繁,從樸素到花哨的所有源代碼以及編譯鏈接的命令。4????????Socket的機制是什么?我們可以簡單的把Socket理解為一個可以連通網(wǎng)絡(luò)上不同計算機程序之間的管道,把一堆數(shù)據(jù)從管道的A端扔進去,則會從管道的B端(也許同時還可以從C、D、E、F……端冒出來)。管道的端口由兩個因素來唯一確認(rèn),即機器的IP地址和程序所使用的端口號。IP地址的含義所有人都知道,
8、所謂端口號就是程序員指定的一個數(shù)字,許