日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

spserver

發(fā)布時(shí)間:2023/12/16 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spserver 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?為了搭一個(gè)spserver服務(wù)器,花了半天的時(shí)間,終于搞好了.....其實(shí)也怪我自己,因?yàn)榇中拇笠鉀]看清楚編譯spserver源代碼工程的先后順序,一直搞不定,果斷google百度了半下午+一晚上,不過(guò)收獲還是很大的。

現(xiàn)在把我這半天中碰到的有關(guān)spserver的問(wèn)題及學(xué)到的東西整理下:

1.先介紹下spserver:

spserver 是一個(gè)實(shí)現(xiàn)了半同步/半異步(Half-Sync/Half-Async)和領(lǐng)導(dǎo)者/追隨者(Leader/Follower) 模式的服務(wù)器框架,能夠簡(jiǎn)化 TCP server 的開發(fā)工作。
spserver 使用 c++ 實(shí)現(xiàn),目前實(shí)現(xiàn)了以下功能:

  • 封裝了 TCP server 中接受連接的功能
  • 使用非阻塞型I/O和事件驅(qū)動(dòng)模型,由主線程負(fù)責(zé)處理所有 TCP 連接上的數(shù)據(jù)讀取和發(fā)送,因此連接數(shù)不受線程數(shù)的限制
  • 主線程讀取到的數(shù)據(jù)放入隊(duì)列,由一個(gè)線程池處理實(shí)際的業(yè)務(wù)
  • 一個(gè) http 服務(wù)器框架,即嵌入式 web 服務(wù)器(請(qǐng)參考: SPWebServer:一個(gè)基于 SPServer 的 web 服務(wù)器框架)

-------------------------------------------------------------網(wǎng)上抄的額.....關(guān)于它的基本用法就先不抄了,我還沒搞的很懂,以后再補(bǔ)上吧

?

spserver的版本是在google的版本管理上面的,網(wǎng)址:http://code.google.com/p/spserver/

下面是它的一個(gè)版本更新圖

可以看到,最新的是0.9.5版。需要注意的是,spserver最開始是在linux上用的,一直到0.9.0版才移植到windows上,但是0.9.0需要依賴libevent和pthread,0.9.1就脫離了libevent和pthread。

?

2.遇到的問(wèn)題

我是想在windows平臺(tái)下搭建一個(gè)小型的游戲計(jì)分服務(wù)器,其實(shí)搭建過(guò)程很簡(jiǎn)單:

(1)下載spserver-0.9.5,解壓縮,是下面這個(gè)樣子的

將解壓縮后的這個(gè)文件夾的路徑放到VS2010的VC++Direction中的include中。

(2)建立一個(gè)基于C/C++的控制臺(tái)工程

包含頭文件

#include <spserver/spiocpserver.hpp> #include <spserver/sphandler.hpp> #include <spserver/sprequest.hpp> #include <spserver/spresponse.hpp> #include <spserver/spmsgdecoder.hpp> #include <spserver/spbuffer.hpp>

(需要其他的話再添加)
(3)在工程的配置中的link中加入spserver.lib(也許還需要ws2_32.lib和mswsock.lib)

我就是在這個(gè)時(shí)候出問(wèn)題了,編譯過(guò)不去,很明顯,我還沒有spserver.lib

顯然,需要到下載的spserver的源代碼中找,在spserver-0.9.5\win32中,有個(gè)spserver.dsw,打開編譯它(貌似有13個(gè)工程)。這里需要說(shuō)一下,因?yàn)榫W(wǎng)上有一篇文章大概叫《將spserver工程移到windows平臺(tái)上》?說(shuō)的是在windows平臺(tái)上搭建spserver環(huán)境,說(shuō)用VC6編譯,注意,它的版本是0.9.0,前面說(shuō)過(guò),0.9.0版是剛剛移到windows平臺(tái)上的,需要libevent和pthread,而在這之后的版都不需要了(它說(shuō)的這種方法我也嘗試了,沒弄成。)

而現(xiàn)在所說(shuō)的編譯spserver-0.9.5\win32中的spserver.dsw,用哪個(gè)編譯器都可以,我用的VS2010,但是一定要將其中的spserver工程設(shè)為start項(xiàng),及先編譯spserver工程。編完后得到了spserver.lib,將它放到剛才簡(jiǎn)歷的c/c++控制臺(tái)工程的目錄中,編譯這個(gè)工程,ok了。

?

3.其他

在下載的源碼中,win32文件夾里有一套測(cè)試代碼(或者叫測(cè)試工具)

testiocpchat:

  • 一個(gè)群發(fā)聊天軟件,任何一個(gè)客戶端說(shuō)的話,所有其它客戶端都會(huì)收到。發(fā)送quit是退出。
  • 模擬大量客戶端,連接服務(wù)器的5555端口。每200毫秒發(fā)一句話,看并發(fā)量怎樣。
  • 如果不知道客戶端怎樣編寫,請(qǐng)使用telnet ip 5555命令來(lái)模擬聊天過(guò)程就可以了。
  • 至于怎樣寫iocp通信服務(wù)器,可以參考testiocpchat工程,添加一些handler就可以了。

    ?

    壓力測(cè)試:

    testiocpecho.cpp 和 testiocpstress.cpp

    E:\spserver-0.9.2\win32\testiocpecho\Debug>.\testiocpecho.exe
    #1728 server type lf
    #1728 Listen on port [3333]
    #1728 Thread #2868 has been created to accept socket
    #1728 [tp@unknown] create thread#4028
    #1728 [tp@unknown] create thread#2492
    #1728 [tp@unknown] create thread#1076
    #1728 [tp@unknown] create thread#3204
    2) 在另一個(gè) console 啟動(dòng) testiocpstress.exe
    E:\spserver-0.9.2\win32\testiocpstress\Debug>.\testiocpstress.exe -c 100 -m 100
    這個(gè)程序支持一些命令行參數(shù),-c 用戶指定模擬多少個(gè) client ,-m 用于指定每個(gè) client 發(fā)送多少條信息。
    在一臺(tái)有 512M 內(nèi)存的 windows xp home edition 機(jī)器上,兩個(gè)程序都在本機(jī)運(yùn)行,可以穩(wěn)定運(yùn)行 5000 的并發(fā)連接。
    如果上到 10K 的連接,在測(cè)試一段時(shí)間之后,會(huì)開始出現(xiàn) 10055 的錯(cuò)誤。
    限于目前沒有更高配置的機(jī)器,沒有辦法做更大并發(fā)的測(cè)試。如果有人有興趣,可以幫忙做一下測(cè)試。

    ?

    暫時(shí)就這么多吧

    總結(jié)

    以上是生活随笔為你收集整理的spserver的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。