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

正文內(nèi)容

基于tcp協(xié)議網(wǎng)上聊天程序-在線瀏覽

2025-07-18 12:00本頁(yè)面
  

【正文】 ndows平臺(tái)中,方法為send(TCP),Client方相對(duì)簡(jiǎn)單:Socket()--Connect()[通過(guò)一定的port連接特定的服務(wù)器,這是與服務(wù)器建立連接]--Write()--Read()。在新建一個(gè)Socket時(shí),可以指定新建何類Socket。Listen()開始監(jiān)聽網(wǎng)絡(luò),Accept()用于接受連接,其返回值是保持同客戶機(jī)聯(lián)系的Socket。Inprise在VC++2008中對(duì)Windows Socket進(jìn)行了有效的封裝,使得用戶可以很方便地編寫網(wǎng)絡(luò)通信程序。首先在服務(wù)器方,利用socket()函數(shù)建立流式套接字,返回套接字號(hào)s,接著利用bind()函數(shù)將套接字s與本地地址綁定,緊接著利用listen()函數(shù)通知TCP,監(jiān)聽客戶方,服務(wù)器準(zhǔn)備接收連接,沒有連接的話,服務(wù)器方通過(guò)closesocket()關(guān)閉套接字s,服務(wù)結(jié)束。交換完成后,服務(wù)器方/客戶方關(guān)閉套接字ns/s,最后服務(wù)器方通過(guò)closesocket()關(guān)閉最初套接字s,服務(wù)結(jié)束。編譯語(yǔ)言采用C++。網(wǎng)絡(luò)中各個(gè)機(jī)器的資源是不平等的,網(wǎng)絡(luò)的真正目的就是共享這些不均等資源源,非對(duì)等相互作用特點(diǎn)也正好體現(xiàn)和適應(yīng)了客觀現(xiàn)實(shí)中資源的不均等現(xiàn)象。3 總體設(shè)計(jì)通常的通信工具,都采用客戶機(jī)/服務(wù)器(C/S)體系結(jié)構(gòu),C/S結(jié)構(gòu)是這樣的一種結(jié)構(gòu):它包括一個(gè)客戶機(jī)(或前端),一個(gè)服務(wù)器(或稱后端),客戶機(jī)的作用是訪問和處理遠(yuǎn)程服務(wù)器上的數(shù)據(jù),服務(wù)器的作用是接收和處理客戶機(jī)的數(shù)據(jù)請(qǐng)求。Client/Server結(jié)構(gòu)是當(dāng)前數(shù)據(jù)庫(kù)應(yīng)用程序中極為流行的一種方式。另外它的服務(wù)器端還可以將信息集中起來(lái),任何客戶機(jī)都可以通過(guò)訪問服務(wù)器而獲得所需的信息。一個(gè)請(qǐng)求總是首先被客戶發(fā)出,然后服務(wù)器總是被動(dòng)地接收請(qǐng)求,返回客戶需要的結(jié)果。一個(gè)客戶提出請(qǐng)求后,服務(wù)進(jìn)程被“喚醒”并且為客戶提供服務(wù),對(duì)客戶的請(qǐng)求做出所需要的應(yīng)答。在客戶端與服務(wù)器盡心數(shù)據(jù)交換,擁有了在線用戶列表后,就可以選擇IP進(jìn)行客戶端之間的點(diǎn)對(duì)點(diǎn)信息交流了。在調(diào)用了Windows sockets 的啟動(dòng)函數(shù)WSACleanup()之后才能進(jìn)行其他的Socket系統(tǒng)調(diào)用,但啟動(dòng)函數(shù)WSAStartup()是為了建立與Windows Sockets DLL的連接,因此在Visual Studio 2008所建立工程的工程設(shè)置中的連接的庫(kù)模塊必須進(jìn)行設(shè)置,在其中的link欄內(nèi)的對(duì)象/庫(kù)模塊中加入“”,才能真正建立建立與Windows Sockets DLL的連接。具體流程圖如1所示。有連接的話,在客戶方,通過(guò)socket()函數(shù)建立流式套接字s,此時(shí)在服務(wù)器方,建立連接,通過(guò)accept()返回,得到新的套接字ns,客戶方通過(guò)connect()將套接字s與遠(yuǎn)程地址連接,此時(shí)服務(wù)器方/客戶方在ns/s上讀/寫數(shù)據(jù),直到交換完成。服務(wù)器若接收的是登陸信息,向該用戶發(fā)送在線用戶列表,并更新服務(wù)器的在線用戶列表;若收到的是發(fā)送信息,服務(wù)器解析信息,然后通過(guò)廣播消息,向其所有線用戶列表發(fā)送消息。 向該用戶發(fā)送在線用戶列表 開始偵聽端口消息 解析消息向其所有在線用戶發(fā)送消息首次登陸更新服務(wù)器在線用戶列表收到消息 運(yùn)行服務(wù)器 是 否 是 廣播消息 服務(wù)器流程圖 客戶端 在運(yùn)行服務(wù)器之后,運(yùn)行客戶端。用戶登錄成功后,向服務(wù)器發(fā)送登陸消息,并更新本地在線用戶列表,然后通過(guò)服務(wù)器實(shí)現(xiàn)與其他客戶聊天;當(dāng)客戶退出,向服務(wù)器發(fā)送下線消息。 開始 開始 開始 運(yùn)行客戶端 運(yùn)行客戶端 運(yùn)行客戶端 用戶登陸 用戶登陸 用戶登陸給服務(wù)器發(fā)送登陸消息登陸成功登陸成功向該用戶發(fā)送在線用戶列表登陸成功向該用戶發(fā)送在線用戶列表 否 是 顯示主頁(yè)面 顯示主頁(yè)面 顯示主頁(yè)面 是給服務(wù)器發(fā)送下線消息向其所有在線用戶發(fā)送消息向其所有在線用戶發(fā)送消息 是更新本地在線用戶列表更新本地在線用戶列表更新本地在線用戶列表與其他用戶進(jìn)行聊天與其他用戶進(jìn)行聊天與其他用戶進(jìn)行聊天 退出 退出 退出 客戶端流程圖 4 詳細(xì)設(shè)計(jì) 設(shè)計(jì)服務(wù)器和客戶端的界面分別為客戶端和服務(wù)器創(chuàng)建基于對(duì)話框的MFC工程?!7?wù)器和客戶端的交互包括客戶端登錄服務(wù)器,服務(wù)器將客戶名添加至客戶列表中,以及客戶下線后,服務(wù)器和在線客戶將下線客戶從客戶列表中刪除等。由于服務(wù)器與客戶端交互時(shí),還需接收客戶端的登錄信息,故將接收客戶端的登錄信息和接收消息發(fā)在同一個(gè)接收函數(shù)中。 (1)服務(wù)器初始化,開始監(jiān)聽客戶端的連接請(qǐng)求,具體代碼如下:BOOL CChatServerApp::InitInstance(){ if (!AfxSocketInit()) //套接字初始化失敗 { AfxMessageBox(IDP_SOCKETS_INIT_FAILED)。 } AfxEnableControlContainer()。 //自定義的CSocket類的子類 m_pSocket = new CServerSocket。 return FALSE。 return FALSE。 //獲取文本框中數(shù)據(jù) if(!m_pSocketCreate()) //創(chuàng)建套接字 { AfxMessageBox(_T(網(wǎng)絡(luò)創(chuàng)建錯(cuò)誤?。?!))。 return。 m_pSocketClose()。 }
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1