基于Socket的局域網(wǎng)即時聊天工具_第1頁
基于Socket的局域網(wǎng)即時聊天工具_第2頁
基于Socket的局域網(wǎng)即時聊天工具_第3頁
基于Socket的局域網(wǎng)即時聊天工具_第4頁
基于Socket的局域網(wǎng)即時聊天工具_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、綜 合 課 程 設(shè) 計 報 告題 目:基于socket的局域網(wǎng) 即時聊天工具 系 別: 電子信息與電氣工程系 專 業(yè):_電子信息工程_班 級:_ _學(xué) 號: 姓 名: _導(dǎo) 師:_ _ 成 績:_ 2012年 12 月 18日目錄摘 要31 引 言41.1 課程設(shè)計目的41.2 設(shè)計平臺52 設(shè)計原理52.1 winsock介紹52.2 tcp/ip協(xié)議簡介62.3 利用csocket進行有連接的通信73 詳細設(shè)計與實現(xiàn)93.1 服務(wù)端的實現(xiàn)93.2客戶端的實現(xiàn)124 程序運行結(jié)果144.1服務(wù)端界面14 4.2客戶端界面144.3 通信過程演示155結(jié)束語176參考文獻177 附錄18摘 要

2、 本設(shè)計在windows平臺上,以c語言為編程語言,實現(xiàn)局域網(wǎng)內(nèi)的即時通信工功能即聊天的功能。本設(shè)計是基于windows socket的編程,分別在同一局域網(wǎng)內(nèi)的兩臺pc機的vc+ 6.0平臺上運行服務(wù)端和客戶端程序。服務(wù)器與客戶端在windows7 環(huán)境下采用了tcp/ip連接方式,由客戶端登錄到服務(wù)端pc機,實現(xiàn)客戶端與服務(wù)端pc的信息傳輸。關(guān)鍵詞: socket; c語言 ;tcp/ip;程序設(shè)計;vc+6.01 引 言 近年來,隨著全球信息化進程的不斷發(fā)展,網(wǎng)絡(luò)也在飛速發(fā)展。出于高效、快速地處理各種事務(wù)的目的,越來越多的企業(yè)在其內(nèi)部使用局域網(wǎng)來進行工作。在內(nèi)部局域網(wǎng)的幫助下,企業(yè)得以簡

3、化信息流程,提高信息交換的速度,從而提高工作效率。然而,隨著企業(yè)規(guī)模的擴大,業(yè)務(wù)量的增加,在局域網(wǎng)上運行的應(yīng)用越來越多,如知識庫、網(wǎng)絡(luò)會議、數(shù)據(jù)庫應(yīng)用和數(shù)據(jù)的同步與備份等,這些應(yīng)用對局域網(wǎng)的信息吞吐、處理能力的要求也越來越高。這些在企業(yè)內(nèi)部原有局域網(wǎng)設(shè)計之初未曾考慮到的新情況的出現(xiàn)使得局域網(wǎng)不堪重負,容易發(fā)生信息阻塞,此時,局域網(wǎng)不但不能提高生產(chǎn)效率,反而成為企業(yè)發(fā)展的瓶頸。 為了解決上述矛盾,人們提出了許多方法。提升網(wǎng)絡(luò)帶寬及增加服務(wù)器的吞吐能力是解決此矛盾的一種方法。然而,從企業(yè)運行的成本方面考慮,無論是單純地提升網(wǎng)絡(luò)帶寬或增加服務(wù)器的吞吐能力都不能從根本上解決局域網(wǎng)資源緊張的問題,對舊有

4、局域網(wǎng)的大規(guī)模硬件改造反而會增加企業(yè)的負擔(dān)。 基于socket的局域網(wǎng)通信軟件可以為企業(yè)原有的局域網(wǎng)提供一種良好,安全,快速的通信機制。它的實現(xiàn)無需對企業(yè)原有的局域網(wǎng)硬件進行任何改動,具有實現(xiàn)成本低廉的優(yōu)點,它的使用能有效地降低局域網(wǎng)通信負荷,提高局域網(wǎng)的使用效率,可以很好地解決企業(yè)內(nèi)部局域網(wǎng)的各種通信需求。 基于socket的局域網(wǎng)聊天工具是此類局域網(wǎng)通信軟件的具體實例之一,它很好地詮釋了socket通信的原理,并且在企業(yè)內(nèi)部通信、教學(xué)、討論等應(yīng)用中都具有一定的實用價值。它具有信息收發(fā)速度快,保密性好,占用網(wǎng)絡(luò)帶寬資源低,占用服務(wù)器吞吐能力低,易于編程實現(xiàn)等優(yōu)點。 基于socket的局域網(wǎng)通

5、信軟件應(yīng)用范圍廣闊,不但可以處理傳統(tǒng)的通信需求,而且也能擴展以適應(yīng)新型的網(wǎng)絡(luò)應(yīng)用,如網(wǎng)絡(luò)教育,數(shù)據(jù)影音傳輸?shù)?,擁有廣泛的應(yīng)用前景。1.1 課程設(shè)計目的了解基于socket的程序設(shè)計方法,增強程序編寫能力,加深對計算機網(wǎng)絡(luò)通信的理解。另外,通過課程設(shè)計培養(yǎng)學(xué)生嚴謹?shù)目茖W(xué)態(tài)度,認真的工作作風(fēng)、團隊協(xié)作精神、自主設(shè)計和獨力思考的能力。使同學(xué)們學(xué)會文獻檢索的基本方法和綜合運用文獻的能力。1.2 設(shè)計平臺網(wǎng)絡(luò):局域網(wǎng)。 操作系統(tǒng):windows 7。 vc+6.0簡介: vc+6.0是microsoft公司推出的一個基于windows系統(tǒng)平臺、可視化的集成開發(fā)環(huán)境,它的源程序按c+語言的要求編寫,并加入

6、了微軟提供的功能強大的mfc(microsoft foundation class)類庫。mfc中封裝了大部分windows api函數(shù)和windows控件,它包含的功能涉及到整個windows操作系統(tǒng)。mfc不僅給用戶提供了windows圖形環(huán)境下應(yīng)用程序的框架,而且還提供了創(chuàng)建應(yīng)用程序的組件,這樣,開發(fā)人員不必從頭設(shè)計創(chuàng)建和管理一個標(biāo)準(zhǔn)windows應(yīng)用程序所需的程序,而是從一個比較高的起點編程,故節(jié)省了大量的時間。另外,它提供了大量的代碼,指導(dǎo)用戶編程時實現(xiàn)某些技術(shù)和功能。因此,使用vc+提供的高度可視化的應(yīng)用程序開發(fā)工具和mfc類庫,可使應(yīng)用程序開發(fā)變得簡單。2 設(shè)計原理2.1 win

7、sock介紹 socket是應(yīng)用層與tcp/ip協(xié)議族通信的中間軟件抽象層,它是一組接口。在設(shè)計模式中,socket其實就是一個門面模式,它把復(fù)雜的tcp/ip協(xié)議族隱藏在socket接口 windows socket是從unix socket繼承發(fā)展而來,最新的版本是2.2。進行windows網(wǎng)絡(luò)編程,你需要在你的程序中包含winsock2.h或mswsock.h,同時你需要添加引入庫ws2_32. lib或wsock32.lib。準(zhǔn)備好后,你就可以著手建立你的第一個網(wǎng)絡(luò)程序了。 socket編程有阻塞和非阻塞兩種,在操作系統(tǒng)i/o實現(xiàn)時又有幾種模型,包括select,wsaasyncsel

8、ect,wsaeventselect ,io重疊模型,完成端口等。要學(xué)習(xí)基本的網(wǎng)絡(luò)編程概念,可以選擇從阻塞模式開始,而要開發(fā)真正實用的程序,就要進行非阻塞模式的編程(很難想象一個大型服務(wù)器采用阻塞模式進行網(wǎng)絡(luò)通信)。在選擇i/o模型時,我建議初學(xué)者可以從wsaasyncselect模型開始,因為它比較簡單,而且有一定的實用性。但是,幾乎所有人都認識到,要開發(fā)同時響應(yīng)成千上萬用戶的網(wǎng)絡(luò)程序,完成端口模型是最好的選擇。windows sockets規(guī)范以u.c. berkeley大學(xué)bsd unix中流行的socket接口為范例定義了一套micosoft windows下網(wǎng)絡(luò)編程接口。它不僅包含了

9、人們所熟悉的berkeley socket風(fēng)格的庫函數(shù);也包含了一組針對windows的擴展庫函數(shù),以使程序員能充分地利用windows消息驅(qū)動機制進行編程。 windows sockets規(guī)范本意在于提供給應(yīng)用程序開發(fā)者一套簡單的api,并讓各家網(wǎng)絡(luò)軟件供應(yīng)商共同遵守。此外,在一個特定版本windows的基礎(chǔ)上,windows sockets也定義了一個二進制接口(abi),以此來保證應(yīng)用windows sockets api的應(yīng)用程序能夠在任何網(wǎng)絡(luò)軟件供應(yīng)商的符合windows sockets協(xié)議的實現(xiàn)上工作。因此這份規(guī)范定義了應(yīng)用程序開發(fā)者能夠使用,并且網(wǎng)絡(luò)軟件供應(yīng)商能夠?qū)崿F(xiàn)的一套庫函數(shù)

10、調(diào)用和相關(guān)語義。2.2 tcp/ip協(xié)議簡介tcp/ip協(xié)議實際上就是在物理網(wǎng)上的一組完整的網(wǎng)絡(luò)協(xié)議。其中tcp是提供傳輸層服務(wù),而ip則是提供網(wǎng)絡(luò)層服務(wù)。tcp/ip主要包括以下協(xié)議:ip:網(wǎng)間協(xié)議(internet protocol) 負責(zé)主機間數(shù)據(jù)的路由和網(wǎng)絡(luò)上數(shù)據(jù)的存儲。同時為icmp,tcp,udp提供分組發(fā)送服務(wù)。用戶進程通常不需要涉及這一層。icmp:網(wǎng)間報文控制協(xié)議(internet control message protocol)此協(xié)議處理網(wǎng)關(guān)和主機的差錯和傳送控制。tcp: 傳輸控制協(xié)議(transmission control protocol)這是一種提供給用戶進程的

11、可靠的全雙工字節(jié)流面向連接的協(xié)議。它要為用戶進程提供虛電路服務(wù),并為數(shù)據(jù)可靠傳輸建立檢查。tcp/ip協(xié)議的核心部分是傳輸層協(xié)議(tcp、udp),網(wǎng)絡(luò)層協(xié)議(ip)。2.3 利用csocket進行有連接的通信casyncsocket類逐個封裝了winsock api,為高級網(wǎng)絡(luò)程序員 提供了更加有力而靈活的方法。這個類基于程序員了解網(wǎng)絡(luò)通訊的假設(shè),目的是為了在mfc中使用winsock,程序員有責(zé)任處理諸如阻塞、字節(jié)順序和在unicode與mbcs 間轉(zhuǎn)換字符的任務(wù)。為了提供更方便的接口以自動處理這些任務(wù),mfc給出 了csocket類,這個類是由casyncsocket類繼承下來的,它提供

12、了比casyncsocket更高層的winsock api接口。csocket類和csocketfile類可以與carchive類一起合作來管理發(fā)送和接收的數(shù)據(jù),這使管理數(shù)據(jù)收發(fā)更加便利。csocket對象提供阻塞模式,這對于carchive的同步操作是至關(guān)重要的。阻塞函數(shù)(如receive()、send()、receivefrom()、sendto() 和accept())直到操作完成后才返回控制權(quán)。在vc中進行winsock的api編程開發(fā)的時候,需要在項目中使用下面的三個文件,否則會出現(xiàn)編譯錯誤。(1) winsock.h: 這是winsock api的頭文件,需要包含在項目中。(2)

13、wsock32.lib: winsock api連接庫文件。(3) winsock.dll: winsock的動態(tài)連接庫,位于windows的安裝目錄下。 圖1 系統(tǒng)實現(xiàn)原理圖服務(wù)器端先初始化socket,然后與端口綁定(bind),對端口進行監(jiān)聽(listen),調(diào)用accept阻塞,等待客戶端連接。在這時如果有個客戶端初始化一個socket,然后連接服務(wù)器(connect),如果連接成功,這時客戶端與服務(wù)器端的連接就建立了??蛻舳税l(fā)送數(shù)據(jù)請求,服務(wù)器端接收請求并處理請求,然后把回應(yīng)數(shù)據(jù)發(fā)送給客戶端,客戶端讀取數(shù)據(jù),最后關(guān)閉連接,一次交互結(jié)束。 在套接字創(chuàng)建以及通信的過程中,將用到很多函數(shù)處

14、理相關(guān)事件,具體函數(shù)見下:(1) afxsocketinit(): 此函數(shù)在初始化應(yīng)用程序函數(shù)中調(diào)用,用于確定winsock版本并做一些套接字的初始化工作。(2) create(): 創(chuàng)建套接字,在創(chuàng)建監(jiān)聽套接字時必須加上端口號。(3) listen(): 監(jiān)聽套接字專用,用于向監(jiān)聽套接字發(fā)送對端口監(jiān)聽的命令。(4) connect(): 客戶端套接字專用,用于向服務(wù)器發(fā)送連接請求。(5) accept(): 監(jiān)聽套接字專用,用于接受客戶端通過網(wǎng)絡(luò)發(fā)送的連接請求,建立連接。(6) send(): 用于向套接字發(fā)送數(shù)據(jù)。(7) receive(): 用于套接字接受數(shù)據(jù)。(8) close():

15、關(guān)閉套接字,可由析構(gòu)函數(shù)調(diào)用。在整個通信過程中,當(dāng)某一事件觸發(fā)時,應(yīng)用框架將收到某些消息,從而自動調(diào)用響應(yīng)函數(shù)。可以在這些函數(shù)中寫入自己的代碼,從而更好的完成通信過程。具體函數(shù)見下:(1) onaccept(): 監(jiān)聽套接字在端口聽到連接請求時應(yīng)用程序框架自動調(diào)用,以告知可以接受請求或拒絕連接。可在該函數(shù)中調(diào)用accept()來連接請求,建立連接。(2) onconnect(): 當(dāng)客戶端套接字連接請求完成后 ,應(yīng)用程序框架調(diào)用該函數(shù) ,告之是否成功。(3) onsend(): 框架調(diào)用此函數(shù)來通知該套接字現(xiàn)在可以調(diào)用send函數(shù)來傳送數(shù)據(jù)。(4) onreceive(): 框架調(diào)用此函數(shù)來告

16、訴套接字現(xiàn)在可以調(diào)用receive函數(shù)從數(shù)據(jù)緩沖區(qū)取出數(shù)據(jù)。(5) oncloes(): 框架調(diào)用該函數(shù)告知套接字與其連接的對方套接字已經(jīng)斷開連接。3 詳細設(shè)計與實現(xiàn)3.1 服務(wù)端的實現(xiàn)服務(wù)端的程序。其流程是:socket()bind()listenaccept()recv()/send()closesocket() 連接模塊設(shè)計:客戶端計算機獲取本機開放的socket端口,再發(fā)送目標(biāo)主機的ip,通過connection()函數(shù)與服務(wù)端建立連接,如果connection()作用結(jié)果出現(xiàn)錯誤的socket,則連接失敗,否則通過recv()函數(shù)接收服務(wù)器發(fā)送的字符串,即為服務(wù)器發(fā)送的歡迎信息。模塊

17、程序如下: int sockfd, new_fd; /*定義套接字*/ struct sockaddr_in my_addr; /*本地地址信息 */ struct sockaddr_in their_addr; /*連接者地址信息*/ int sin_size; wsadata ws; wsastartup(makeword(2,2),&ws); /初始化windows socket dll /建立socket if (sockfd = socket(af_inet, sock_stream, 0) = -1) /如果建立socket失敗,退出程序 printf(socket errorn)

18、; exit(1); /bind本機的myport端口 my_addr.sin_family = af_inet; /* 協(xié)議類型是inet */ my_addr.sin_port = htons(myport); /* 綁定myport端口*/ my_addr.sin_addr.s_addr = inaddr_any; /* 本機ip*/ if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)= -1) /bind失敗,退出程序 printf(bind errorn); closesocket(sockfd)

19、; exit(1); /listen,監(jiān)聽端口 if (listen(sockfd, backlog) = -1) /listen失敗,退出程序 printf(listen errorn); closesocket(sockfd); exit(1); printf(listen.); /等待客戶端連接 sin_size = sizeof(struct sockaddr_in); if (new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size) = -1) printf(accept errorn); closesock

20、et(sockfd); exit(1); printf(naccept!n); /有連接,發(fā)送ww0830字符串過去 if (send(new_fd, ww0830n, 14, 0) = -1) printf(send error); closesocket(sockfd); closesocket(new_fd); exit(1); printf(send ok!n); /成功,關(guān)閉套接字 closesocket(sockfd); closesocket(new_fd); return 0;對服務(wù)端程序的流程概括:先是初始化windows socket dll: wsastartup(mak

21、eword(2,2),&ws); 然后建立socket: sockfd = socket(af_inet, sock_stream, 0) 再bind本機的myport端口:my_addr.sin_family = af_inet; /* 協(xié)議類型是inet */ my_addr.sin_port = htons(myport); /* 綁定myport端口 */ my_addr.sin_addr.s_addr = inaddr_any; /* 本機ip */ bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr) 接

22、下來監(jiān)聽端口: listen(sockfd, backlog) 如果有客戶端的連接請求,接收它: new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size) 最后發(fā)送ww0830字符串過去: send(new_fd, ww0830n, 14, 0) 關(guān)閉socket: closesocket(sockfd); closesocket(new_fd); ”編譯、執(zhí)行,就會一直監(jiān)聽830端口3.2客戶端的實現(xiàn)客戶端程序了。其流程是: socket()connect()send()/recv()closesocket() 連接

23、用戶模塊設(shè)計:通過getip()函數(shù)獲得客戶端ip,然后開放一個端口,綁定并監(jiān)聽端口。接受來自客戶端的連接,并向客戶端發(fā)送歡迎信息。與客戶端建立連接。模塊程序如下:int main(int argc, char *argv) int sockfd, numbytes; char bufmaxdatasize; struct sockaddr_in their_addr; /* 對方的地址端口信息 */ if (argc != 2) /需要有服務(wù)端ip參數(shù) fprintf(stderr,usage: client hostnamen); exit(1); wsadata ws;wsastartu

24、p(makeword(2,2),&ws); /初始化windows socket dll if (sockfd = socket(af_inet, sock_stream, 0) = -1) /如果建立socket失敗,退出程序 printf(socket errorn); exit(1); /連接對方their_addr.sin_family = af_inet; /* 協(xié)議類型是inet */ their_addr.sin_port = htons(port); /* 連接對方port端口 */ their_addr.sin_addr.s_addr = inet_addr(argv1);

25、/* 連接對方的ip */ if (connect(sockfd, (struct sockaddr *)&their_addr,sizeof(struct sockaddr) = -1) /如果連接失敗,退出程序 printf(connet errorn); closesocket(sockfd); exit(1); /接收數(shù)據(jù),并打印出來if (numbytes=recv(sockfd, buf, maxdatasize, 0) = -1) /接收數(shù)據(jù)失敗,退出程序 printf(recv errorn); closesocket(sockfd); exit(1); bufnumbytes

26、 = 0; printf(received: %s,buf); closesocket(sockfd); return 0; 對客戶端程序的流程概括:首先是初始化windows socket dll: wsastartup(makeword(2,2),&ws); 然后建立socket: sockfd = socket(af_inet, sock_stream, 0) 接著連接服務(wù)器方:their_addr.sin_family = af_inet; /* 協(xié)議類型是inet */ their_addr.sin_port = htons(port); /* 連接對方port端口 */ their

27、_addr.sin_addr.s_addr = inet_addr(argv1); /* 連接對方的ip */ connect(sockfd, (struct sockaddr *)&their_addr,sizeof(struct sockaddr) 連接成功就接收數(shù)據(jù): recv(sockfd, buf, maxdatasize, 0) 最后把收到的數(shù)據(jù)打印出來并關(guān)閉套接字: printf(received: %s,buf); closesocket(sockfd); 編譯結(jié)束后,運行服務(wù)端,然后??蛻舳?服務(wù)端ip 回車你會看到服務(wù)端發(fā)來得數(shù)據(jù)。4 程序運行結(jié)果4.1服務(wù)端界面 圖2 服

28、務(wù)器界面4.2客戶端界面 圖3 客戶端界面4.3 通信過程演示(1)打開服務(wù)端寫入正確服務(wù)器端口點擊開啟服務(wù),服務(wù)器即開始監(jiān)聽如圖4。 圖4(2)對方也開啟服務(wù)后,再連接客戶端,填入地址并連接服務(wù)器如下圖。 圖5 (3)連接成功后,輸入信息并點擊發(fā)送結(jié)果如下,如圖6。 圖6 5結(jié)束語三個星期的時間很快就過去了,計算機網(wǎng)絡(luò)課程設(shè)計也即將結(jié)束.在這兩個星期里,有過不少的艱辛和疑惑,我從剛開始的無從下手到最后的順利完成,我又一次體驗了自我設(shè)計的滿足感.全局函數(shù)和變量雖然對很多棘手的問題都能方便實現(xiàn),但是對程序的封裝性和可移植性是個很大的挑戰(zhàn)。c+的優(yōu)點便在于多態(tài)的實現(xiàn)和程序的封裝,程序員會盡量去提高

29、整個程序的低耦合度,讓開發(fā)的程序便于移植。在多文件程序中,全局變量可能在多個地方被修改,所以維護起來麻煩,在查錯時也不好發(fā)現(xiàn)。而且全局變量可能會出現(xiàn)重復(fù)定義問題,使編譯出現(xiàn)錯誤。此次課程設(shè)計的順利完成,還歸功于老師殷切的指導(dǎo)和無私的幫助。在此,我向老師們表示衷心地感謝!6參考文獻1 郎銳. visual c+網(wǎng)絡(luò)通信程序開發(fā)指南m. 北京: 機械工業(yè)出版社, 2004.2 楊國燕. visual c+ 面向?qū)ο蟪绦蛟O(shè)計教程m. 黑龍江: 黑龍江大學(xué)出版社, 2008.3 david j. kruglinski,programming visual c+.1998.4 劉艷菊. 基于tcp/ip

30、協(xié)議關(guān)于socket通信程序的研究j. 齊齊哈爾大學(xué)學(xué)報, 2003, 19(3): 51-53.5anthony jones and jim ohlumd,tcp/ip詳解 卷一:協(xié)議(英文版).機械工業(yè)出版社,2003.6楊路明. c語言程序設(shè)計m. 北京:北京郵電大學(xué)出版社,20057 附錄/ 初始化winsock庫wsadata wsadata;word sockversion = makeword(2, 0);:wsastartup(sockversion, &wsadata);/ 下面是取得本地ip地址的過程,將它顯示在狀態(tài)欄的第一個分欄中/ 取得本機名稱char szhost25

31、6;:gethostname(szhost, 256);/ 通過本機名稱取得地址信息hostent* phost = gethostbyname(szhost);if(phost != null) cstring sip;/ 得到第一個ip地址in_addr *addr =(in_addr*) *(phost-h_addr_list);/ 顯示給用戶sip.format( 本機ip:%s, inet_ntoa(addr0);m_bar.settext(sip, 0, 0);if(m_socket = invalid_socket) / 開啟服務(wù)/ 取得端口號cstring sport;getd

32、lgitem(idc_port)-getwindowtext(sport);int nport = atoi(sport);if(nport 65535)messagebox(端口號錯誤!);return;/ 創(chuàng)建監(jiān)聽套節(jié)字,使它進入監(jiān)聽狀態(tài)if(!createandlisten(nport)messagebox(啟動服務(wù)出錯!);return;/ 設(shè)置相關(guān)子窗口控件狀態(tài)getdlgitem(idc_start)-setwindowtext(停止服務(wù));m_bar.settext( 正在監(jiān)聽, 0, 0);getdlgitem(idc_port)-enablewindow(false);els

33、e/ 停止服務(wù)/ 關(guān)閉所有連接closeallsocket();/ 設(shè)置相關(guān)子窗口控件狀態(tài)getdlgitem(idc_start)-setwindowtext(開啟服務(wù));m_bar.settext( 空閑, 0, 0);getdlgitem(idc_port)-enablewindow(true);if(m_socket = invalid_socket):closesocket(m_socket);/ 創(chuàng)建套節(jié)字m_socket = :socket(af_inet, sock_stream, ipproto_tcp);if(m_socket = invalid_socket)return false;/ 填寫要關(guān)聯(lián)的本地地址sock

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論