91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 224KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-05-22
  • 語言: 其他
  • 標(biāo)簽: C++,通訊??

資源簡介

這個(gè)工程是基于TCP長連接的包模式的網(wǎng)絡(luò)通訊框架。 在TCP連接中,按照一個(gè)一個(gè)的包方式進(jìn)行數(shù)據(jù)傳輸, 框架實(shí)現(xiàn)了可以同時(shí)偵聽多個(gè)端口, 每個(gè)數(shù)據(jù)包既可以不壓縮傳輸,也能支持zlib壓縮和blowfish加密傳輸。 服務(wù)端提供三種線程池來進(jìn)行tcp連接處理, 一類是接收線程池,接收線程池獲取每個(gè)socket傳輸來的數(shù)據(jù)包, 同時(shí)保證每個(gè)socket的包按照到來的順序進(jìn)行處理, 二類是工作線程池,由接收線程池把接收到的數(shù)據(jù)包投遞到工作線程池, 工作線程池專門處理這些接收到的數(shù)據(jù)包。 三類是發(fā)送線程池,當(dāng)工作線程池處理完這些數(shù)據(jù)包,確定需要發(fā)送處理結(jié)果數(shù)據(jù)包到客戶端, 或者其他線程需要發(fā)送數(shù)據(jù)包到客戶端,他們首先把數(shù)據(jù)包投遞到發(fā)送線程池, 發(fā)送線程池專門負(fù)責(zé)數(shù)據(jù)包的發(fā)送。 框架同時(shí)提供了每個(gè)客戶端的定時(shí)器功能,在服務(wù)端內(nèi)部各個(gè)socket之間數(shù)據(jù)通信等。 框架來源于一個(gè)沒做完的手游服務(wù)端,至于沒有使用現(xiàn)成的游戲通訊框架而自己實(shí)現(xiàn), 主要是因?yàn)榱?xí)慣了自己造輪子。 因?yàn)轫?xiàng)目沒做完,所有沒進(jìn)行嚴(yán)格的測試,無法保證代碼無BUG。 您若要使用到自己的項(xiàng)目中,請完全熟悉了之后再用,這樣出現(xiàn)BUG也好自己修改。 框架支持 Linux和windows平臺(tái)。 相關(guān)BLOG請看如下連接: http://blog.csdn.net/fanxiushu/article/details/50631626

資源截圖

代碼片段和文件信息

/////?By?Fanxiushu?2015-10-15?用于服務(wù)端接管內(nèi)存分配釋放
#include?“common.h“
#include?“base_buffer.h“

int?base_buffer::header_length?=?(int)(int64_t)(&((base_buffer*)0)->buffer[0]);
///////

struct?BUF_SOLT
{
int???????????alloc_size;?///??分配的大小?64128?256?512?1K?4K?8K?16K?32K?64K?
LIST_ENTRY????head;???????///??
spin_lock_t???lock;???????///??
long??????????buf_count;??///??
////////
BUF_SOLT(?int?alloc_size?){
/////
InitializeListHead(&head);

spin_lock_init(lock);
this->alloc_size?=?alloc_size;?
this->buf_count?=?0;?
////////
// printf(“ALLOC_SIZE=%d\n“?alloc_size?);?/////
}
//////////////
~BUF_SOLT(){

spin_lock_deinit(lock);?////
/////
}

/////////////////

};

static?struct?BUF_SOLT??buf_solt[]?=?
{
BUF_SOLT(32)
BUF_SOLT(64)
BUF_SOLT(128)?
BUF_SOLT(256)
BUF_SOLT(512)
BUF_SOLT(1024)
BUF_SOLT(4096)
BUF_SOLT(8192)
BUF_SOLT(16*1024)
BUF_SOLT(32*1024)
BUF_SOLT(64*1024)
BUF_SOLT(128*1024)
};

/////
#define?BUF_SOLT_COUNT???(?sizeof(buf_solt)?/?sizeof(buf_solt[0])?)


base_buffer*?alloc_buffer(int?size)
{
if?(size?<=?0)?return?NULL;
////
int?alloc_size?=?0;
int?left_size?=?0;
BUF_SOLT*?solt?=?NULL;?
base_buffer*?base_buf?=?NULL;?////

for?(?int?i?=?0;?i? BUF_SOLT*?s?=?&buf_solt[i];
if?(?size?>?left_size?&&?size?<=?s->alloc_size?){
solt?=?s;
break;
}

left_size?=?s->alloc_size;??///?///
////
}

if?(solt){?
////
alloc_size?=?solt->alloc_size;

spin_lock(?solt->lock?);

if?(!IsListEmpty(&solt->head)){

PLIST_ENTRY?entry?=?RemoveHeadList(&solt->head);?/////
--solt->buf_count;
base_buf?=?CONTAINING_RECORD(entry?base_buffer?list);?/////
}

spin_unlock(?solt->lock?);?
}
else{
alloc_size?=?((size?+?7)?/?8)?*?8;?///?8?的倍數(shù)
}

if?(base_buf){

// printf(“**?ALLOC?Buffer?from?POOL.?raw_size=%d?alloc_size=%d\n“?size?base_buf->alloc_size?);

base_buf->data_size?=?0;
return?base_buf;
}

int?sz?=?base_buffer::header_length?+?alloc_size;

base_buffer*?buf?=?(base_buffer*)malloc(sz);
InitializeListHead(&buf->list);?
buf->alloc_size?=?alloc_size;?
buf->data_size?=?0;?

return?buf;?
}

void?free_buffer(base_buffer*?buf)
{
if?(!buf)?return;?
for?(int?i?=?0;?i? BUF_SOLT*?s?=?&buf_solt[i];

if?(s->alloc_size?==?buf->alloc_size){
// printf(“***?free?buffer?to?POOL.\n“);?///

spin_lock(?s->lock);?

InsertTailList(&s->head?&buf->list);?/////
++s->buf_count;

spin_unlock(?s->lock?);

return;?
}
///////
}

//////
printf(“***?Direct?FREE?BUFFER.\n“);
free(buf);?////
}

/////////////////



?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件????????967??2016-01-31?21:58??base_client\base_client.sln

????..A..H.?????44544??2016-01-31?22:22??base_client\base_client.v12.suo

?????文件???????5499??2015-10-19?17:48??base_client\base_client.vcxproj

?????文件???????3343??2015-10-19?17:48??base_client\base_client.vcxproj.filters

?????文件???????2762??2015-10-20?16:20??base_client\src\base_buffer.cpp

?????文件????????477??2015-10-19?17:22??base_client\src\base_buffer.h

?????文件??????17596??2015-10-23?17:20??base_client\src\blowfish.cpp

?????文件???????3822??2016-01-31?22:00??base_client\src\client.cpp

?????文件???????9633??2015-10-19?17:42??base_client\src\common.cpp

?????文件???????7653??2015-10-20?16:16??base_client\src\common.h

?????文件???????6417??2015-12-31?00:30??base_client\src\crypt_msg.cpp

?????文件???????1264??2015-10-21?13:59??base_client\src\crypt_msg.h

?????文件???????2377??2015-10-20?16:22??base_client\src\list_entry.h

?????文件???????1321??2016-01-31?21:55??base_server\base_server.sln

????..A..H.?????89088??2015-12-31?03:08??base_server\base_server.suo

????..A..H.?????71680??2016-02-03?23:46??base_server\base_server.v12.suo

?????文件???????9594??2016-01-31?21:51??base_server\base_server.vcxproj

?????文件???????4164??2015-10-20?14:21??base_server\base_server.vcxproj.filters

?????文件????????165??2015-10-12?15:36??base_server\base_server.vcxproj.user

?????文件????????764??2015-10-20?16:47??base_server\makefile

?????文件???????2439??2016-02-03?22:50??base_server\src\main.cpp

?????文件???????2837??2015-11-22?01:00??base_server\src\server\base_buffer.cpp

?????文件????????477??2015-10-19?17:22??base_server\src\server\base_buffer.h

?????文件??????29329??2016-01-31?22:48??base_server\src\server\base_server.cpp

?????文件??????10539??2016-02-03?22:55??base_server\src\server\base_server.h

?????文件??????17503??2015-10-20?16:56??base_server\src\server\blowfish.cpp

?????文件??????28433??2015-11-03?11:22??base_server\src\server\cJSON.cpp

?????文件???????7526??2015-02-13?18:53??base_server\src\server\cJSON.h

?????文件???????9633??2015-10-19?17:42??base_server\src\server\common.cpp

?????文件???????7672??2015-10-23?13:51??base_server\src\server\common.h

............此處省略44個(gè)文件信息

評論

共有 條評論

相關(guān)資源