freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于winsock的網(wǎng)絡(luò)按時計費系統(tǒng)設(shè)計與實現(xiàn)論文-文庫吧資料

2025-01-24 15:09本頁面
  

【正文】 IP: 網(wǎng)間協(xié)議(Internet Protocol) 負(fù)責(zé)主機(jī)間數(shù)據(jù)的路由和網(wǎng)絡(luò)上數(shù)據(jù)的存儲。 4 基于TCP/IP協(xié)議的網(wǎng)絡(luò)編程 TCP/IP 體系結(jié)構(gòu)與特點 TCP/IP體系結(jié)構(gòu)TCP/IP協(xié)議實際上就是在物理網(wǎng)上的一組完整的網(wǎng)絡(luò)協(xié)議。 //指定連接的端口號 int nConnect=connect(sock,(LPSOCKADDR)amp。 //地址族 =IPaddr。4.在調(diào)用過closesocket()函數(shù)關(guān)閉套接字之后不會再發(fā)生FD_CLOSE事件。3.Windows Sockets DLL在一個網(wǎng)絡(luò)事件發(fā)生后,通常只會給相應(yīng)的應(yīng)用程序發(fā)送一個消息,而不能發(fā)送多個消息。2.可以在設(shè)置過異步選擇后通過再次調(diào)用WSAAsyncSelect(s,hwnd,0,0)。 WSAAsyncSelect(s,hwnd,wMsg2,FD_CLOSE)。 DECLARE_MESSAGE_MAP() 實現(xiàn)文件: BEGIN_MESSAGE_MAP(CNetServerView, CView) //{{AFX_MSG_MAP(CNetServerView) //}}AFX_MSG_MAP ON_MESSAGE(WM_SOCKET_MSG,OnSocket) END_MESSAGE_MAP() 部分源代碼Connectdb()//本地數(shù)據(jù)庫進(jìn)行連接Local port=”3350”//定義連接端口Local_ip=getipaddress()//得到本地ip地址(Local_port Local_ip)//進(jìn)行通信綁定()//通信控件進(jìn)行偵聽Connectionrequest事件編碼//連接請求時處理li_lrow=(0)(li_lrow,”ms”,”連接請求,遠(yuǎn)程IP地址:+ ”)if 0then()end if (requestid)remote_IP= li_lrow=(0)(li_lrow,”ms”,”連接成功,遠(yuǎn)程IP地址:+ RemoteIP”)dataarrival:事件編碼:(rsf_recept,8)li_lrow=(0)(li_lrow,”ms”,”收到數(shù)據(jù):”“+data_recept)(li_lrow)deal_data(data_recept)//對接收的報文進(jìn)行處理(data_return)low=(0)(lrow,”ms”,”返回數(shù)據(jù):”“+data_return) (li_lrow)【18】為了在一次通訊結(jié)束后為下次通信做準(zhǔn)備,同時也保證在server方和cliient方通信時是使用的同一socket,可在sendplete事件中人為關(guān)閉先前建立的socket:()li_lrow=(0)(li_lrow,”ms”,”遠(yuǎn)程端口”=remote_IP+”斷開連接”) ()li_lrow=(0)(li_lrow,”ms”,”端口處于偵聽狀態(tài) default: break。此時客戶機(jī)關(guān)閉或退出。 break。 (cDataBuffer,iReadLen)。 //將信息保存到文件 if(!(,CFile::modeReadWrite))(E:,CFile::modeCreate|CFile::modeReadWrite)。此時有字符到達(dá),需要進(jìn)行接收處理 char cDataBuffer[MTU*10]。 0x0000FFFF。在消息處理函數(shù)中可以通過對消息參數(shù)低字節(jié)進(jìn)行判斷而區(qū)別出發(fā)生的是何種網(wǎng)絡(luò)事件: void CNetServerView::OnSocket(WPARAM wParam,LPARAM lParam) { int iReadLen=0。 int PASCAL FAR connect( SOCKET s, const struct sockaddr FAR *name, int namelen )。與服務(wù)器端的socket 不同的是,客戶端的socket 可以調(diào)用 bind() 函數(shù),由自己來指定IP地址及port號碼;但是也可以不調(diào)用 bind(),而由 Winsock來自動設(shè)定IP地址及port號碼。前面那段代碼中的WSAAsyncSelect()函數(shù)便是實現(xiàn)網(wǎng)絡(luò)事件異步選擇的核心函數(shù)??紤]到這種情況,將套接字設(shè)置為阻塞工作方式,并為其單獨開辟一個子線程,將其阻塞控制在子線程范圍內(nèi)而不會造成整個應(yīng)用程序的阻塞。 return 1。 nLen)。 pViewnewskt=accept(pViewsock,(LPSOCKADDR)amp。 //開啟線程避免主程序的阻塞 AfxBeginThread(Server,NULL)。然后調(diào)用listen()函數(shù)開始偵聽,再通過accept()調(diào)用等待接收連接以完成連接的建立: //連接請求隊列長度為1,即只允許有一個請求,若有多個請求, //則出現(xiàn)錯誤,給出錯誤代碼WSAECONNREFUSED。 該函數(shù)的第二個參數(shù)是一個指向包含有本機(jī)IP地址和端口信息的sockaddr_in結(jié)構(gòu)類型的指針,其成員描述了本地端口號和本地主機(jī)地址,經(jīng)過bind()將服務(wù)器進(jìn)程在網(wǎng)絡(luò)上標(biāo)識出來。 bind(sock,(LPSOCKADDR)amp。 =0。函數(shù)來將其釋放。 函數(shù)的第一個參數(shù)用于指定地址族,在Windows下僅支持AF_INET(TCP/IP地址);第二個參數(shù)用于描述套接字的類型,對于流式套接字提供有SOCK_STREAM;最后一個參數(shù)指定套接字使用的協(xié)議,一般為0。應(yīng)用程序在網(wǎng)絡(luò)上傳輸、接收的信息都通過這個套接字接口來實現(xiàn)的。服務(wù)器端應(yīng)用程序在使用套接字之前,首先必須擁有一個Socket,系統(tǒng)調(diào)用socket()函數(shù)向應(yīng)用程序提供創(chuàng)建套接字的手段。 參 數(shù):s:Socket 的識別碼; int PASCAL FAR WSACleanup( void )。這兩個函數(shù)都是調(diào)用成功返回0,否則返回SOCKET_ERROR。 參數(shù):s:Socket的識別碼; addr:存放來連接的客戶端的地址; addrlen:addr的長度 6)結(jié)束 socket 連接結(jié)束服務(wù)器和客戶端的通信連接是很簡單的,這一過程可以由服務(wù)器或客戶機(jī)的任一端啟動,只要調(diào)用closesocket()就可以了,而要關(guān)閉Server端監(jiān)聽狀態(tài)的socket,同樣也是利用此函數(shù)。該函數(shù)調(diào)用成功返回一個新產(chǎn)生的Socket對象,否則返回INVALID_SOCKET。     … } 5)服務(wù)器端接受客戶端的連接請求當(dāng)Client提出連接請求時,Server 端hwnd視窗會收到Winsock Stack送來我們自定義的一個消息,這時,我們可以分析lParam,然后調(diào)用相關(guān)的函數(shù)來處理此事件【15】。所以,可以在窗口處理自定義消息函數(shù)中使用以下結(jié)構(gòu)來響應(yīng)Socket的不同事件:   switch(lParam)    {case FD_READ:     …     break。 參數(shù): s:Socket 對象; hWnd :接收消息的窗口句柄; wMsg:傳給窗口的消息; lEvent:被注冊的網(wǎng)絡(luò)事件,也即是應(yīng)用程序向窗口發(fā)送消息的網(wǎng)路事件,該值為下列值FD_READ、FD_WRITE、FD_OOB、FD_ACCEPT、FD_CONNECT、FD_CLOSE的組合,各個值的具體含意為FD_READ:希望在套接字S收到數(shù)據(jù)時收到消息;FD_WRITE:希望在套接字S上可以發(fā)送數(shù)據(jù)時收到消息;FD_ACCEPT:希望在套接字S上收到連接請求時收到消息;FD_CONNECT:希望在套接字S上連接成功時收到消息;FD_CLOSE:希望在套接字S上連接關(guān)閉時收到消息;FD_OOB:希望在套接字S上收到帶外數(shù)據(jù)時收到消息【14】。該函數(shù)調(diào)用成功返回0,否則返回SOCKET_ERROR。 參 數(shù): s:需要建立監(jiān)聽的Socket; backlog:最大連接個數(shù); 服務(wù)器端的Socket調(diào)用完listen()后,如果此時客戶端調(diào)用connect()函數(shù)提出連接申請的話,Server 端必須再調(diào)用accept() 函數(shù),這樣服務(wù)器端和客戶端才算正式完成通信程序的連接動作。該函數(shù)調(diào)用成功返回0,否則返回SOCKET_ERROR。4)監(jiān)聽當(dāng)服務(wù)器端的Socket對象綁定完成之后,服務(wù)器端必須建立一個監(jiān)聽的隊列來接收客戶端的連接請求。參 數(shù): s:Socket對象名;name:Socket的地址值,這個地址必須是執(zhí)行這個程式所在機(jī)器的IP地址;namelen:name的長度;如果使用者不在意地址或端口的值,那么可以設(shè)定地址為INADDR_ANY,及Port為0,Windows Sockets 會自動將其設(shè)定適當(dāng)之地址及Port (1024 到 5000之間的值)。3)綁定端口接下來要為服務(wù)器端定義的這個監(jiān)聽的Socket指定一個地址及端口(Port),這樣客戶端才知道待會要連接哪一個地址的哪個端口,為此我們要調(diào)用bind()函數(shù),該函數(shù)調(diào)用成功返回0,否則返回SOCKET_ERROR。SOCKET PASCAL FAR socket( int af, int type, int protocol )參數(shù): af:目前只提供 PF_INET(AF_INET);type:Socket 的類型 (SOCK_STREAM、SOCK_DGRAM);protocol:通訊協(xié)定(如果使用者不指定則設(shè)為0);如果要建立的是遵從TCP/IP協(xié)議的socket,第二個參數(shù)type應(yīng)為SOCK_STREAM。2)建立Socket初始化WinSock的動態(tài)連接庫后,需要在服務(wù)器端建立一個監(jiān)聽的Socket,為此可以調(diào)用Socket()函數(shù)用來建立這個監(jiān)聽的Socket,并定義此Socket所使用的通信協(xié)議。在程式中調(diào)用該函數(shù)的形式如下:WSAStartup((WORD)((18|1),(LPWSADATA)amp。這個例子共包括兩個程序。而且整個實現(xiàn)過程可以大致用以下幾個非常關(guān)鍵的Windows Sockets API函數(shù)將其慣穿下來【11】。本文以VC++為例,來說明如何進(jìn)行WINSOCK程序設(shè)計。最后資料傳送結(jié)束,雙方調(diào)用closesocket()關(guān)閉套接字來結(jié)束這次通訊。相對于服務(wù)器,客戶端的工作就顯得比較簡單了,當(dāng)客戶端打開套接字之后,便可通過調(diào)用connect()和服務(wù)器建立連接。服務(wù)器與客戶機(jī)開始都必須調(diào)用Windows Sockets API函數(shù)socket()建立一個套接字sockets,然后服務(wù)器方調(diào)用bind()將套接字與一個本地網(wǎng)絡(luò)地址捆扎在一起,再調(diào)用listen()使套接字處于一種被動的準(zhǔn)備接收狀態(tài),同時規(guī)定它的請求隊列長度。默認(rèn)狀態(tài)下最多可同時接收5個客戶的連接請求,并與之建立通信關(guān)系【10】。本文選取了基于TCP/IP的客戶機(jī)/服務(wù)器模型和面向連接的流式套
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1