對做的乙個小的C 聊天室的總結

2021-05-24 14:49:47 字數 2323 閱讀 2270

其中afxsocketinit()函式返回乙個布林值。要想使用這個函式還需要在預編譯標頭檔案stdafx中加入#include」afxsock.h「

3、緊接著我們在cchatdlg中通過右鍵分別新增乙個成員函式initsocket和乙個成員變數m_socket(設為private)在函式initsocket()中新增如下**:bool cchatdlg::initsocket()

此段**用於建立初始化套接字。緊接著寫如下**:

sockaddr_in addrsock;

addrsock.sin_family=af_inet;

addrsock.sin_port=htons(6000);

addrsock.sin_addr.s_un.s_addr=htonl(inaddr_any);

int retval;

retval=bind(m_socket,(sockaddr*)&addrsock,sizeof(sockaddr));

if(retval==socket_error)

return true;

}此段**用於繫結。並在oninitdialog()中新增宣告initsocket()。**如下:initsocket();

4、接下來該接受資料啦,我們建立乙個執行緒專門用來接受資料,並將接受到的資料顯示在編輯框中。我應該使用執行緒建立函式createthread()。執行緒的任務是接受到資料並將其顯示因此需要兩個引數,注意到createthread()函式的第四個引數為結構體指標,因此構造乙個結構體,用此結構體傳遞這兩個引數。在cchatdlg()中新增乙個結構體構造**如下:struct recvparam

;最後這個雙引號注意不要丟掉。接著在oninitdialog()宣告並引用這個結構體**如下:recvparam *precvparam=new recvparam;

precvparam->socket=m_socket;

precvparam->hwnd=m_hwnd;//m_hwnd是每個窗體對應的控制代碼。

接著在createthread()用這個結構體當引數。**如下:

handle hthread=createthread(null,0,recvproc,(lpvoid)precvparam,0,null);

closehandle(hthread);

return true;  // return true  unless you set the focus to a control

}上面的這個函式createthread()的第三個引數是對應的是這個執行緒的功能函式recvproc(要不將此函式宣告為靜態的要不將其在全域性宣告)。在下面對此函式具體實現編碼如下:

dword winapi cchatdlg::recvproc(lpvoid ipparameter)

將接受過來的資料通過訊息響應使其顯示到響應的編輯框中。編輯**步驟如下:

a:在cchatdlg中定義如下:#define wm_recvdata wm_user+1

b:在下面相應的地方接著寫:afx_msg void onrecvdata(wparam wparam,lparam lparam);

c:在dodataexchange(cdataexchange *pdx)中寫入如下**:

begin_message_map(cchatdlg, cdialog)

//}afx_msg_map

on_message(wm_recvdata,onrecvdata)

end_message_map() d:

void cchatdlg::onrecvdata(wparam wparam,lparam lparam)

以上四部是乙個訊息的過程。

以上的接受端基本已經寫好了接下來該寫傳送端啦。

5、雙擊傳送按鈕自動生成乙個void cchatdlg::onbtnsend()函式其中的**如下:

void cchatdlg::onbtnsend()

以上就是實現的整個過程。

我應該對如下的一些函式記住:socket()、bind()函式中具體引數的含義、控制代碼handle和hwnd具體含義、creatthread()函式以及引數的具體含義還有其引數中的功能函式、sprintf()函式、afx_msg定義識別符號的意義、recvfrom()函式及引數、inet_ntoa()函式功能:將網路位址轉換成「.」點隔的字串格式。postmessage()函式:、mv_user所以自定義訊息的步驟:(一)先在標頭檔案中定義自己訊息的id,如 #define wm_my_first_message (wm_user + 0x001)   (二)再宣告自己的訊息處理函式:afx_msg void onmyfirstmessage();   (三)在cpp檔案中新增訊息對映巨集: (四)最後定義訊息處理函式:

websocket實現乙個簡單的聊天室對話

npm install socket.io client socket是乙個高效能的伺服器框架,開發者只要實現一兩個介面,便可以開發出自己的網路應用,例如rpc服務 聊天室伺服器 手機遊戲伺服器等。koa 通過 node.js 實現了乙個十分具有表現力的 http 中介軟體框架,力求讓 web 應用...

乙個簡單聊天室的建立

經過乙個階段的asp學習,下面我們結合所學過的內容建立乙個最簡單的聊天室,雖然很簡單,但是大家可以通過他來掌握乙個聊天室建立的基本過程,並且可以不斷的完善其功能.下面介紹其主要步驟 3,最後把txtwho的內容初始化.也就是當瀏覽者輸入過一次自己的姓名以後就不用再次輸入了,為了區分每個不同的瀏覽者,...

實現乙個簡單的WebSocket聊天室

websocket 是 html5 開始提供的一種在單個 tcp 連線上進行全雙工通訊的協議。websocket 使得客戶端和伺服器之間的資料交換變得更加簡單,允許服務端主動向客戶端推送資料。在 websocket api 中,瀏覽器和伺服器只需要完成一次握手,兩者之間就直接可以建立永續性的連線,並...