vc編寫伺服器**式的聊天室
2009-9-11 本文參考了 visual c++6.0完全自學手冊 中的示例
一 流程說明
客戶端客戶端建立流式套接字
呼叫connection向伺服器傳送連線請求
連線成功後使用建立與之關聯的的csocketfile物件和carchive物件
使用carchive物件在客戶端和伺服器之間傳送資料
結束之後釋放csocketfile物件,carchive物件,csocket物件
服務端服務端建立流式套接字
開始監聽連線請求
有連線請求呼叫accpet函式接受請求,並建立乙個新的客戶端套接字。
連線成功後使用建立與之關聯的的csocketfile物件和carchive物件
使用carchive物件在客戶端和伺服器之間傳送資料。
服務端接受到某乙個客戶端傳送過來的資料之後,將資料傳送到連線到該伺服器的各個客戶端
結束之後釋放csocketfile物件,carchive物件,csocket物件
二 過載函式說明
客戶端clientsocket需要過載virtual void onreceive(int nerrorcode);和virtual void onclose(int nerrorcode);函式
服務端需要過載virtual void onaccept(int nerrorcode);函式
三 實現
1訊息文字序列化操作類
標頭檔案msg.h
class cmsg : public cobject
;實現檔案msg.cpp
#include "stdafx.h"
#include "msg.h"
cmsg::cmsg()
cmsg::~cmsg()
void cmsg::serialize(carchive &ar)
2 客戶端socket類
標頭檔案clientsocket.h
#include "stdafx.h"
#include "afxsock.h"
class cmsg;
class cclientsocket : public csocket
;實現檔案clientsocket.cpp
#include "stdafx.h"
#include "clientsocket.h"
#include "msg.h"
cclientsocket::cclientsocket()
cclientsocket::~cclientsocket()
void cclientsocket::init()
while (!m_parchivein->isbufferempty());
csocket::onreceive(nerrorcode);
}void cclientsocket::sendmsg(cmsg * pmsg)
}void cclientsocket::sendmsg(cmsg * pmsg)
}void cclientsocket::onclose(int nerrorcode)
3伺服器不僅要包括客戶端socket,序列化資料還需要乙個監聽socket
標頭檔案serversocket.h
#pragma once
#include "stdafx.h"
#include "afxsock.h"
class cserverdlg;
class cserversocket : public csocket
;實現檔案serversocket.cpp
#include "stdafx.h"
#include "serversocket.h"
#include "clientsocket.h"
#include "afxsock.h"
#include "msg.h"
cserversocket::cserversocket()
cserversocket::~cserversocket()
void cserversocket::init(uint port)
void cserversocket::onaccept(int nerrorcode)
在onaccept處理函式中將訊息傳送到各個客戶端
cptrlist m_plconn; //鍊錶類儲存接受的客戶端socket
cserversocket m_listensocket;
cclientsocket * psocket = new cclientsocket();// 新建客戶端套接字
if (m_listensocket.accept(*psocket))// 接受連線請求
psocket->init();/ 新客戶端套接字初始化
m_plconn.addtail(psocket);// 新增到已連線套接字列表中
}else
}以上程式已經在visual c++2005 中除錯通過
乙個socket原始碼
vc編寫伺服器 式的聊天室 2009 9 11 本文參考了 visual c 6.0完全自學手冊 中的示例 一 流程說明 客戶端客戶端建立流式套接字 呼叫connection向伺服器傳送連線請求 連線成功後使用建立與之關聯的的csocketfile物件和carchive物件 使用carchive物件...
乙個簡單的殼原始碼
最近出差,偶有閒暇,寫了個簡單的殼,先宣告下,此殼部分內容借鑑看雪論壇某位大俠 現在搜尋找不到了,所以名字忘記了 名為shell的程式。主要實現有以個方面的功能 1,對text塊進行rc4加密,組織程式被ida等靜態工具分析。2,替換程式中的部分api函式,讓其執行到api函式時能跳到殼執行相關 後...
乙個簡單的殼原始碼
最近出差,偶有閒暇,寫了個簡單的殼,先宣告下,此殼部分內容借鑑看雪論壇某位大俠 現在搜尋找不到了,所以名字忘記了 名為shell的程式。主要實現有以個方面的功能 1,對text塊進行rc4加密,組織程式被ida等靜態工具分析。2,替換程式中的部分api函式,讓其執行到api函式時能跳到殼執行相關 後...