




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、哈爾濱理工大學課程設計題目: 基于TCP的CS模式程序設計院 系: 計算機科學與技術(shù)學院 網(wǎng)絡工程系班 級: 網(wǎng)絡11-2班學 號: 姓名: 同組成員: 指導教師: 成 績: 2014年06月27日一.系統(tǒng)設計的目標1.1 選題目的和意義在Windows操作系統(tǒng)下,使用Socket編程實現(xiàn)兩個進程之間的通信,兩個進程間使用TCP建立可靠連接,熟悉TCP協(xié)議以及套接字編程原理;兩個進程間使用C/S工作模式,在此結(jié)合并發(fā)服務器原理,實現(xiàn)服務器同時與多進程之間進行通信,深入了解C/S工作模式。TCP是傳輸層的應用協(xié)議,可通過多方面來保證數(shù)據(jù)傳輸?shù)目煽啃裕捎昧送V沟却绞絹砘貞獢?shù)據(jù)的接收,只有當接
2、收到數(shù)據(jù)時,用戶才發(fā)送數(shù)據(jù)確認報文,同時此協(xié)議使用滑動窗口方法來控制網(wǎng)絡擁塞,提高數(shù)據(jù)傳輸?shù)目煽啃??;赥CP/IP協(xié)議和套接字編程原理為服務器端完成基本數(shù)據(jù)配置,主要采用套接字編程原理,通過調(diào)試運行并且經(jīng)過完善后,實現(xiàn)并發(fā)服務器的功能。在這次課程設計的過程中,對于網(wǎng)絡編程有了更深一步的了解。首先是對于計算機網(wǎng)絡基礎這方面,對于網(wǎng)絡體系中的幾種分層方法,每層的作用都由了系統(tǒng)的理解,特別是對于Socket編程這一塊,套接字的創(chuàng)建、綁定以及使用,基于TCP、UDP的編程以及并發(fā)服務器的原理都有了深一步的理解,這次課程設計對于以后進行網(wǎng)絡的開發(fā)有很大的幫助。即時通信(Instant Message)
3、,由于其具有實時性、跨平臺性、成本低、效率高等優(yōu)點而受到廣泛的使用。設計并實現(xiàn)一個能夠處理多用戶進行實時、安全的即時通信系統(tǒng)具有較強的現(xiàn)實意義。即時通信的底層通信是通過SOCKET套接字接口實現(xiàn)的。當前的主流UNIX系統(tǒng)和微軟的WINDOWS系統(tǒng)都在內(nèi)核提供了對SOCKET字接口的支持。使用這個統(tǒng)一的接口,可以編寫一個可移植的TCP/IP通信程序。使信息能夠在INTERNET上可靠的傳輸。 本文設計并實現(xiàn)了基于局域網(wǎng)內(nèi)的簡單即時通信系統(tǒng),系統(tǒng)采用C/S模式,底層通信通過SOCKET套接字接口實現(xiàn),服務器負責客戶端的登錄驗證,好友信息的保存和心跳報文的發(fā)送??蛻舳瞬捎肞2P方式實現(xiàn)消息傳遞,并能
4、實現(xiàn)文件的傳輸。本文首先討論了同步套接字,異步套接字,多線程并發(fā)執(zhí)行任務等;然后闡述了客戶端、服務器如何使用XML序列化的消息進行通信。本課題目標是實現(xiàn)局域網(wǎng)用戶之間的即時交流和文件傳輸,通過基礎的網(wǎng)絡SOKET編程,為局域網(wǎng)內(nèi)部的即時通信提供一個簡單而較安全的解決方案。1.2 題目開發(fā)背景即時通信是一個終端連往一個即時通信網(wǎng)路的服務。即時通信不同于e-mail在于它的交談是實時的。大部分的即時通信服務提供了presence awareness的特性顯示聯(lián)絡人名單,聯(lián)絡人是否在在線與能否與聯(lián)絡人交談。 最早的即時通信軟件是ICQ,ICQ是英文中I seek
5、0;you的諧音,意思是我找你。四名以色列青年于1996年7月成立Mirabilis公司,并在11月份發(fā)布了最初的ICQ版本,在六個月內(nèi)有85萬用戶注冊使用。 在因特網(wǎng)上受歡迎的即時通信服務包含了MSN Messenger、AOL Instant Messenger、Yahoo! Messenger、NET Messenger Service、Jabber、ICQ與QQ。 這些服務有賴于許多想法更久的(與普遍)的在線聊天媒介,如Internet Relay Chat一樣知名。 1970
6、年代早期,一種更早的即時通信形式是柏拉圖系統(tǒng)(PLATO system)。之后在1980年代,UNIX/Linux的交談實時信息被廣泛的使用于工程師與學術(shù)界,1990年代即時通信更跨越了因特網(wǎng)交流。1996年11月,ICQ是首個廣泛被非UNIX/Linux使用者用于因特網(wǎng)的即時通信軟件。在ICQ的介紹之后,同時在許多地方有一定數(shù)量的即時通信方式發(fā)展,且各式的即時通信程序有獨立的協(xié)議,無法彼此互通。這引導使用者同時執(zhí)行兩個以上的即時通信軟件,或者他們可以使用支持多協(xié)議的終端軟件,如Gaim、Trillian或Jabber。 近年來,許多即時通信服務開始提供視訊會議的功能,網(wǎng)絡
7、電話(VoIP),與網(wǎng)絡會議服務開始整合為兼有影像會議與實時信息的功能。于是,這些媒體的分別變的越來越模糊。 1.2 國內(nèi)外研究現(xiàn)狀 國外研究現(xiàn)狀 當今,國際上對網(wǎng)絡通信系統(tǒng)研究的較好的公司有,思科,Sun,Ms等公司,思科主要研究的是底層的傳輸;MS,Sun公司研究的是應用層。其中ms公司憑借其在操作系統(tǒng)的壟斷地位,為了在網(wǎng)絡的發(fā)展中取得先機,采用了各種各樣的手段。但是,其捆綁的msn,無論從功能上,還是技術(shù)上來說,都不算是非常先進的。當然,ie,同樣也不是很受人青睞,這讓人想起了,當年的網(wǎng)景公司,網(wǎng)景只是生不逢時。MS不擇手段
8、的想打跨網(wǎng)景,可見其對網(wǎng)絡的重視。如今,Sun公司在網(wǎng)絡應用上捷足先登,憑借著Java,Sun在網(wǎng)絡的應用上領先于MS。微軟,想用同樣的辦法搞跨對手,因此它拿出了Visual c#,來對抗Java。這些都是在應用層面的開發(fā)工具。應用層上的產(chǎn)品就更顯種類繁多。ICQ幾乎是國際上通用的即時通信工具,由于在我國它的應用不是很廣,所以,其原理也很少被介紹。msn,是MS的產(chǎn)品,同樣在國內(nèi)沒什么市場,所以,對其原理,也很少被討論過。至于ie,是在Visual c+下開發(fā)的產(chǎn)品,雖然有嚴重的安全隱患,不過,至少能在某種程度上代表當今國際研究的水平。此外,國際上最近出先了新的瀏覽器Fir
9、efox,其性能據(jù)說是遠高于ie,也許在網(wǎng)絡的天下,Ms又有了更強勁的對手。 國內(nèi)研究現(xiàn)狀 國內(nèi)在應用層上的網(wǎng)絡應用軟件目前發(fā)展異常的火爆,因為我國有著網(wǎng)絡應用的最大的市場,現(xiàn)在國內(nèi)網(wǎng)絡的基礎性建設發(fā)展迅速,應用軟件也層出不窮,其中,在游戲的領域中,網(wǎng)絡通信的工作做的不錯,如聯(lián)眾游戲平臺,還有其他的一些平臺,這些平臺基本上都是基于VC+的,用的都是Socket通信,但是為了效率,這些平臺沒有用MFC提供的CSocket類,而是直接用Socket進行通信。所以效率上不錯。此外,tencent的即時通信,也是做的很好的,從某中程度上來說,代表
10、了國內(nèi)最高的水平。1.3 TCP/IP體系結(jié)構(gòu)TCP/IP的中文譯名為傳輸控制協(xié)議/網(wǎng)際協(xié)議,又叫網(wǎng)絡通訊協(xié)議,這個協(xié)議是Internet最基本的協(xié)議,Internet國際互聯(lián)網(wǎng)絡的基礎,簡單地說,就是由網(wǎng)絡層的IP協(xié)議和傳輸層的TCP協(xié)議組成的。TCP/IP協(xié)議并不完全符合OSI的七層參考模型。傳統(tǒng)的開放式系統(tǒng)互連參考模型,是一種通信協(xié)議的七層抽象的參考模型,其中每一層執(zhí)行某一特定任務。該模型的目的是使各種硬件在相同的層次上互相通信。這七層是:物理層、數(shù)據(jù)鏈路層、網(wǎng)絡層、傳輸層、會話層、表示層和應用層。而TCP/IP通訊協(xié)議采用了四層的層級結(jié)構(gòu),每一層都呼叫它的下一層所提供的網(wǎng)絡來完成自己的
11、需求,如下圖所示。圖1 計算機網(wǎng)絡體系結(jié)構(gòu)應用層:應用程序間溝通的層,如簡單電子郵件傳輸(SMTP),文件傳輸協(xié)議(FTP),網(wǎng)絡遠程訪問協(xié)議(Telnet)等。傳輸層:在此層中,它提供了節(jié)點間的數(shù)據(jù)傳送,應用程序之間的通信服務,主要功能是數(shù)據(jù)格式化,數(shù)據(jù)確認和丟失、重傳等。如傳輸控制協(xié)議(TCP),用戶數(shù)據(jù)報協(xié)議(UDP)等,TCP和UDP給數(shù)據(jù)包加入傳輸數(shù)據(jù)并把它傳輸?shù)较乱粚又校@一層負責傳送數(shù)據(jù),并且確定數(shù)據(jù)已被傳送并到達接收。網(wǎng)絡層:負責提供基本的數(shù)據(jù)封包傳送功能,讓每一塊數(shù)據(jù)包都能夠到達目的主機(但不檢查是否正確而接收),如網(wǎng)際協(xié)議(IP)。網(wǎng)絡接口層:接收IP數(shù)據(jù)包并進行傳輸,從網(wǎng)
12、絡上接收物理幀,抽取IP數(shù)據(jù)報轉(zhuǎn)交給上一層,對實際的網(wǎng)絡媒體的管理,定義如何使用實際網(wǎng)絡(如Ethernet)來傳送數(shù)據(jù)。1.4 TCP傳輸ACK=2000FIN=2000ACK=1800FIN=2000SYN=1001ACK=800SYN=1000ACK=3ACK=2SYN=12MSL圖2 TCP連接中分組交換以及客戶端與服務器的狀態(tài)轉(zhuǎn)換TCP協(xié)議在IP協(xié)議之上,提供可靠的傳輸服務。這種服務的特點:可靠、全雙工、流式和無結(jié)構(gòu)傳輸。TCP協(xié)議使用了積極確認和重傳送的技術(shù)來實現(xiàn)可靠傳輸。接收者在收到發(fā)送者發(fā)送的數(shù)據(jù)后,必須發(fā)送一個相應的確認(ACK)消息,表示他已經(jīng)收到數(shù)據(jù)。發(fā)送者保存發(fā)送的數(shù)據(jù)
13、的記錄,在發(fā)送下一個數(shù)據(jù)之前等待這個數(shù)據(jù)的確認消息在他發(fā)送這個數(shù)據(jù)的同時,啟動了一個計時器。在一定時間內(nèi)沒有接收到確認消息,就認為這個數(shù)據(jù)在傳輸過程中丟失了,接著就會發(fā)送這個數(shù)據(jù)。同時TCP實體又采用了滑動窗口協(xié)議。當發(fā)送方傳送一個數(shù)據(jù)報到達目的地時,接收方的TCP實體向發(fā)送方發(fā)送一個數(shù)據(jù)報,其中包含一個確認序號,它等于希望收到的下一個數(shù)據(jù)報的順序號。建立了一個TCP連接,需要三次握手過程,連接才能成功建立,如圖二所示。握手過程的第一段的代碼位設置為SYN,序號為J,表示開始一次握手。接收方收到此報文斷后,向發(fā)送方回發(fā)一個報文段,代碼位為SYN和ACK,序號為K,確認序號為J+1,表示接收方同
14、意建立此連接。發(fā)送者收到此報文段后,發(fā)送ACK建立連接,完成三次握手以后,雙方就開始正式傳送數(shù)據(jù)。在通信完成階段,兩方通過四次斷開來釋放連接,如圖二,客戶端請求釋放連接,發(fā)送有效位為FIN,服務器端給一個確認信號,若服務器端沒有數(shù)據(jù)發(fā)送,便向客戶端發(fā)送FIN請求,客戶端對此回應,等待2MSL,徹底斷開連接。1.5 C/S模式鑒于此次設計目的,采用Linux環(huán)境下使用TCP實現(xiàn)點到點的可靠連接,實現(xiàn)基于TCP/IP協(xié)議的面向連接的通信,連接雙方分為客戶端和服務器端,主要實現(xiàn)過程如圖3所示。圖3 TCP客戶/服務器的套接字連接TCP套接字編程中,服務器實現(xiàn)的步驟:(1) 使用socket()函數(shù)創(chuàng)
15、建套接字。(2) 將創(chuàng)建的套接字綁定到指定的地址結(jié)構(gòu)。(3) Listen()函數(shù)設置套接字為監(jiān)聽模式,使服務器進入被動打開的狀態(tài)。(4) 接受客戶端的連接請求,建立連接。(5) 接收、應答客戶端的數(shù)據(jù)請求。(6) 終止連接??蛻舳藢崿F(xiàn)的步驟:(1) 使用socket()函數(shù)創(chuàng)建套接字。(2) 調(diào)用connect()函數(shù)建立一個與TCP服務器的連接。(3) 發(fā)送數(shù)據(jù)請求,接收服務器的數(shù)據(jù)應答。(4) 終止連接。綜上所述,TCP/IP應用中的服務器必須先于客戶端進程啟動,直到對客戶端的響應結(jié)束或強迫終止。二.系統(tǒng)原理2.1開發(fā)配置環(huán)境簡介CodeBlocks安裝,和普通安裝一樣,你不會選擇可以一
16、直next完成,不做詳細敘述。 注意:當中有一步讓你選擇編譯器,你可以選擇 GUN GCC Compiler,并設置位默認(default)。如果沒做也沒事兒,可以在編譯器(Compiler)設置進行設置。 GTK+配置 安裝GTK 解壓gtk+bundle_2.24.10-20120208_win32.zip到C:gtk+ 。也可以是別處,你個人喜好,隨便哪兒都行。 配置環(huán)境變量 添加“C:gtk+bin”到系統(tǒng)環(huán)境變量(path) 注意:GTK解壓的位置不同,你相應變一下就行了。 導出編譯庫信息 導出編譯庫信息,一會兒要在Code:Blocks上配置編譯、鏈接環(huán)境。 pkg-config
17、-cflags gtk+-2.0 > cflags.txt cflags.txt pkg-config -libs gtk+-2.0 > libs.txt libs.txt 還是那句話,安裝位置不同,內(nèi)容不同,不要直接從我這里拷貝。 配置Code:Blocks編譯鏈接環(huán)境 菜單上依次點擊: Settings-Compiler settings 會出現(xiàn)Compiler settings設置窗口: a. 此處把cflags.txt 內(nèi)容復制至文本框2.2開發(fā)工具及技術(shù)簡介DevC: Dev-C+是一個C&C+開發(fā)工具,它是一款自由軟件,遵守GPL協(xié)議。它集合了GCC、MinGW
18、3等眾多自由軟件,并且可以取得最新版本的各種工具支持,而這一切工作都是來自全球的狂熱者所做的工作,并且你擁有對這一切工具自由使用的權(quán)利,包括取得源代碼等,前提是你也必須遵守GNU協(xié)議。Dev-C+每一天都在進步著,因為它是一個自由軟件。 Dev-C+是一個非常實用的編程軟件,多款著名軟件均由它編寫而成,它在C的基礎上,增強了邏輯性。 發(fā)展 C+是從C語言中發(fā)展而來的。C語言是1972年由美國貝爾實驗室(AT&TBell)的D.M.Ritchie研制成功的。它不是為了初學者設計的,而是為計算機專業(yè)人員設計的。最初它是作為寫UNIX操作系統(tǒng)的一種工
19、具,在貝爾實驗室內(nèi)部使用。后來C語言不斷改進,人們發(fā)現(xiàn)它功能豐富、表達能力強、使用靈活方便、應用面廣、目標程序效率高、可移植性好,既具有高級語言的優(yōu)點,又具有低級語言的許多優(yōu)點,特別適合于寫系統(tǒng)軟件,因此C語言從實驗室走向美國,從美國走向世界。到20世紀70年代,它已風靡全世界。無論是在中國還是在外國,C語言都成為了計算機開發(fā)人員的基本功。 為了解決軟件設計的危機,在20世紀80年代,人們提出了面向?qū)ο蟮某绦蛟O計(object oriented programming,OOP),需要設計出能支持面向?qū)ο蟮?/p>
20、程序設計方法的新的語言。在實踐中,人們發(fā)現(xiàn)由于C語言是如此的深入人心,使用如此廣泛,面對程序設計方法的革命,最好的辦法不是另外發(fā)明一種語言去代替它,而是在它原有的基礎上加以發(fā)展。在這種形式下,C+應運而生。C+是由貝爾實驗室(AT&TBell)的Bjarne Stroustrup博士及其同事于20世紀80年代初在C語言的基礎上開發(fā)成功的。 AT&TBell發(fā)布的第一個Dev-C+編譯系統(tǒng)實際上是一個預編譯器(前端編譯器),真正的Dev-C+程序是在1988年誕生的。 應用
21、60;Dev-C+目前是NOI、NOIP等比賽的指定工具,唯一的缺點就是Debug功能較弱。Codeblocks: 它是基于wxWidget庫的程序。首先,因為它就是用C+開發(fā)的,所以在速度上明顯比Eclipse快。其次,因為是一個專門的C+IDE,所以在配置方面也非常符合C+開發(fā)的習慣,功能幾乎可以和VC2005/2007媲美。最后,它還是一個開源的IDE,并且它的體積比Eclipse和VC小了不止一個數(shù)量級整個壓縮后的源碼包只有6M多!其實說實話,我也是剛開始用Code:Blocks,但是我敢負責任的說,它真的很好。以前編程和調(diào)試都一直在VIM、Emacs和gdb里掙扎,命令方式的GDB調(diào)
22、試把握折騰的都崩潰了。突然接觸了Code:Blocks以后,馬上讓我找到了當前用VC編程和調(diào)試的快樂的感覺。就是前幾天,我在GDB下調(diào)試一個C+程序時的不便,嘗試了DDD還是覺得不方便,于是偶然間試了一下Code:Blocks,一會的時間問題就解決了。雖然它使用的還是GCC+GDB,但是它對其包裝以后使我使用起來感到了極大的方便2.3 相關(guān)協(xié)議及結(jié)構(gòu)介紹套接字 套接字這個術(shù)語并沒有定義某個協(xié)議:它具有兩層含義,但兩者都與一個協(xié)議相關(guān)。第一個含義是套接字編程API,它最初由伯克利大學為BSD UNIX而創(chuàng)建。BSD套接字在經(jīng)過修改后被用作Windows環(huán)境的編程接口(并且被命名為WinSock)
23、。WinSock API被包裝在System.Net.sockets命名空間的.NET類中。Windows Sockets 是一個獨立于協(xié)議的編程接口,用于編寫網(wǎng)絡應用程序。 套接字的第二層含義表示一個用于在進程間進行通信的終端。在TCP/IP中,每個終端都與一個IP地址和一個端口號綁定。我們必須對流式套接字和數(shù)據(jù)報套接字這兩種類型進行區(qū)分。流失套接字用TCP/IP協(xié)議來使用面向連接的通信;另一方面, 數(shù)據(jù)報套接字用UDP/IP來使用無連接通信。 即時通信協(xié)議 協(xié)議是一系列的步驟,它包括雙方或者多方,設計它的目的是要完成一項任務。即時通信協(xié)議,參與的雙方或者多方是即時通信的實體。協(xié)議必須是雙方
24、或者多方參與的,一方單獨完成的就不算協(xié)議。這樣在協(xié)議動作的過程中,雙方必須交換信息,包括控制信息、狀態(tài)信息等等。這些信息的格式必須是協(xié)議參與方同意并且遵循的。好的協(xié)議要求清楚,完整,每一步都必須有明確的定義,并且不會引起誤解;對每種可能的情況必須規(guī)定具體的動作。 有許多的 IM 系統(tǒng),如 AOL IM、Yahoo IM 和 MSN IM,它們使用了不同的技術(shù),而且它們互不兼容。為了創(chuàng)建即時通信的統(tǒng)一標準,人們經(jīng)過了多次嘗試:IETF 的對話初始協(xié)議(SIP)和 即時通信對話初始協(xié)議和表示擴展協(xié)議三.系統(tǒng)設計1.服務器端等待客戶端請求連接,連接成功后,接收客戶端信息并顯示,然后接收來自客戶的信息
25、(字符串),將字符串反轉(zhuǎn)并將結(jié)果送回客戶端。服務器可同時處理多個客戶端的請求,準確區(qū)分每個用戶的信息。圖6 服務器端的程序流程圖2.客戶端與服務器相連接,用戶輸入客戶的名稱并發(fā)給服務器,然后向服務器發(fā)送字符串,接收服務器返回的經(jīng)處理的字符串,并顯示。四.系統(tǒng)實現(xiàn)及詳細設計4.1系統(tǒng)詳細設計1先打開服務器端,再打開客戶端,客戶端向服務器端發(fā)送請求進行三次握手,客戶端顯示回執(zhí)信息Hello client,客戶端和服務器端連接成功。2客戶端向服務器端發(fā)送問候語,服務器端就收后發(fā)送回執(zhí)信息,客戶端可以和服務器端進行通信。3服務器端向客戶端發(fā)送信息,實現(xiàn)雙向通信,即客戶端可以向服務器端發(fā)送連接請求,服務
26、器端可以進行回執(zhí)信息的發(fā)送。4服務器端斷開連接請求: 客戶端斷開連接請求:五.總結(jié)基于TCP/IP協(xié)議和套接字編程原理為服務器端完成基本數(shù)據(jù)配置,主要采用套接字編程原理,通過調(diào)試運行并且經(jīng)過完善后,實現(xiàn)并發(fā)服務器的功能。在這次課程設計的過程中,對于網(wǎng)絡編程有了更深一步的了解。首先是對于計算機網(wǎng)絡基礎這方面,對于網(wǎng)絡體系中的幾種分層方法,每層的作用都由了系統(tǒng)的理解,特別是對于Socket編程這一塊,套接字的創(chuàng)建、綁定以及使用,基于TCP、UDP的編程以及并發(fā)服務器的原理都有了深一步的理解,這次課程設計對于以后進行網(wǎng)絡的開發(fā)有很大的幫助。六. 心得體會系統(tǒng)設計期間,學習到很多課堂上沒有的知識,還積
27、累了很多實踐經(jīng)驗,增強了動手能力和解決實際問題的能力。通過這次的課程設計,對網(wǎng)絡編程有了更深入的了解,進一步熟悉了TCP和UDP協(xié)議的內(nèi)容 , 由于時間有限,該課程設計部分功能并未實現(xiàn),例如用fork()調(diào)用子進程,實現(xiàn)并發(fā)服務器。還有客戶端輸入IP地址及端口號來進行連接的功能并未實現(xiàn),希望在以后的學習生活中將這些功能意義實現(xiàn),完成全部功能的實現(xiàn)。七.致謝這次課程設計郭老師指導了很多,從算法原理到計算機原理知識都一并拓展,我受益頗多,感謝郭老師在這次課程設計中的指導和栽培,祝老師工作順利、身體健康。八.參考文獻:1 梁亞聲等.計算機網(wǎng)絡安全教程.第2版.北京:機械工業(yè)出版社,20082 劉文濤
28、.網(wǎng)絡安全編程技術(shù)與實例.北京:機械工業(yè)出版社2008附 錄附錄 核心程序代碼客戶端核心代碼:#include<stdio.h>#include<winsock2.h>#pragma comment (lib,"ws2_32")int main(int argc,char* argv) WSADATA wsaData; char buf1000; WSAStartup(MAKEWORD(2,2),&wsaData); SOCKET s = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP); sockaddr_in
29、 sockAddr; sockAddr.sin_family = PF_INET; sockAddr.sin_addr.S_un.S_addr=inet_addr(""); sockAddr.sin_port=htons(827); connect(s,(SOCKADDR*)&sockAddr,sizeof(SOCKADDR); char szBufferMAXBYTE=0; recv(s,szBuffer,MAXBYTE,0); printf("szBuffer=%srn",szBuffer); int num; while(
30、1) scanf("%s",buf); send(s,buf,100,0); if( (num=recv(s,buf,1000,0)=-1 ) printf("recv() errorn"); break; printf("%s",buf); if( (num=recv(s,buf,1000,0)=-1 ) printf("recv() errorn"); break; printf("%s",buf); closesocket(s); WSACleanup(); return 0;服務器端核心代碼:#include<winsock2.h>#include <stdio.h>#pragma comment (lib,"ws2_32&q
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 星級酒店餐廳培訓
- 關(guān)于考勤的培訓
- 雕刻眼睛面試題及答案
- javaactiviti面試題及答案
- 歌唱音樂考試題及答案
- 汽車電動踏板培訓
- 農(nóng)業(yè)物聯(lián)網(wǎng)在2025年精準種植中的智能溫室環(huán)境監(jiān)測與控制系統(tǒng)應用報告
- 2024-2025學年冀教版英語七年級下冊期末考試(唐山專用)
- 倉庫電腦培訓
- 2025年遠程醫(yī)療對偏遠地區(qū)醫(yī)療服務社區(qū)健康管理的影響報告
- 青海中考地理試題及答案
- 《中心靜脈導管的護理》課件
- 城市軌道交通應急處理自然災害應急處理課件
- 新疆維吾爾自治區(qū)2024年普通高校招生普通類國家及地方專項、南疆單列、對口援疆計劃 本科二批次投檔情況 (理工)
- 基礎會計教學質(zhì)量分析報告
- 《宏觀經(jīng)濟學原理》課件
- 2025新人教版七下英語單詞默寫表
- 2024年保山市小升初英語考試模擬試題及答案解析
- 《急性胰腺炎診治》課件
- 變壓器知識點培訓課件
- 《《資本論》第一卷導讀》課件
評論
0/150
提交評論