導航:首頁 > IDC知識 > c寫伺服器

c寫伺服器

發布時間:2020-10-16 01:29:51

1、問一下 用C/C++寫的伺服器 開源的有哪些?

經典的ACE框架,不過裡面的Bug也有很多,用的時候小心。

2、求助,純C寫伺服器還是C++寫伺服器的迷茫

不大的話用C寫,很大的話用C++。即使用C也可以模擬出C++的class,叫abstract data type

3、如何用c語言實現http伺服器

//服務端簡易代碼如下:
#include <stdio.h>  
#include <stdlib.h>  
  
#include <err.h>  
#include <event.h>  
#include <evhttp.h>  
  
void http_handle(struct evhttp_request *req, void *arg); /*  HTTP Request Handle  */  
  
int main(){  
    struct evhttp *httpd;  
    event_init();  
    httpd = evhttp_start("0.0.0.0", 2345);  
    if (httpd == NULL) {  
        fprintf(stderr, "Error: Unable to listen on %s:%d ");  
        exit(1);      
    }     
    evhttp_set_timeout(httpd, 2000);  
    evhttp_set_gencb(httpd, http_handle, NULL);  
    event_dispatch();  
    evhttp_free(httpd);  
  
    return 0;  
}  
  
void http_handle(struct evhttp_request *req, void *arg){  
    struct evbuffer *buf;  
    buf = evbuffer_new();  
  
    /*  Response the client  */  
    evhttp_send_reply(req, HTTP_OK, "OK", buf);  
  
    //evbuffer_add_printf(buf, "%s", "HTTPSQS_AUTH_FAILED");  
  
    /*  Release the memory  */  
    evbuffer_free(buf);  
    fprintf(stderr,"Send  ");  
}

編譯:編譯時把libevent的類庫中的.so文件和.h文件連接 進來。

4、c/c++寫伺服器一般用什麼方式訪問資料庫的?

要做伺服器端的話資料庫就是放在你的伺服器上的, 資料庫會提供相應的訪問介面, 具體使用方式可以搜一下"C++連接資料庫"之類的
http是客戶端訪問伺服器才用得到, 直接操作資料庫的總是伺服器端而不是客戶端

5、c語言有網路編程有沒有人使用c做游戲伺服器

目前通用的編程語言有兩種形式:匯編語言和高級語言。

匯編語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業知識,但匯編語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。

高級語言是目前絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由於省略了很多細節,編程者也就不需要有太多的專業知識。

高級語言主要是相對於匯編語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,如目前流行的VB、VC、FoxPro、Delphi等,這些語言的語法、命令格式都各不相同。

高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類:

解釋類:執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可以動態地調整、修改應用程序。

編譯類:編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(* .OBJ)才能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型的,例如Visual C++、Visual Foxpro、Delphi等。

6、在什麼情況下是用C語言寫linux伺服器

GUI 可以用 GTK 寫 , 是 C 的 , 用不著 C++,服務端 不會讓你寫 GUI, C++ 你可以 看看, 主要理解一下 OOP, C 也可以 實現OO, 多看看沒壞處, 有些技術不到家的公司會要你用C++, 看看就行了, 基本用不到c++高級特性, 底層還是靠C的功底...

7、linux系統用C語言寫個視頻伺服器,求老前輩們指導

我的c語言只有二級水平,班門弄斧了。
似乎,linux本身就有幾個不錯的開源視頻伺服器,
如果要求不高的話可以直接使用他們的;
如果他們的不能達到要求,可以使用c些一些代碼做轉換,然後使用popen,system之類的調用;
或者,借鑒開源的視頻伺服器代碼自己深度加工;
gstreamer本身就是專門處理視頻流的,可以看看能不能用上。

8、自己最近在用C++寫一個C/S的應用,想請教一下關於伺服器的問題?

自己最近在用c加加寫一個應用,這個伺服器還是可以,沒有什麼多大的問題。

9、C/C++做伺服器需要學習什麼樣的技術

伺服器所用到的知識:

TCP/UDP,最基本的

並發——你可以選擇使用select、poll,或者是多線程、多進程

如果你使用多線程,那麼就必須使用同步技術——信號量、互斥體、條件變數的一種或幾種,並且對於多線程技術,你還需要考慮使用進行線程分離與合並,

如果你使用了多進程,那麼同步技術就不是你需要考慮的了,你需要考慮的是進程相關的問題了,你是使用fork還是vfork,你該如何處理客戶端的請求,如何處理客戶端斷開連接後保證能夠處理完數據並且沒有僵屍進程產生,你還需要考慮高並發的問題

你發送接受數據的時候,採用何種方式,是阻塞的還是非阻塞的,還有連接超時、重傳等問題

你是選擇TCP還是UDP,如果選擇UDP你可得忙了,需要你自己去進行重傳驗證,模擬TCP的三次握手,保證數據不會丟失,保證數據的有序性

還有其他很多需要你考慮的,以上都是指在Linux下的C++,本人對windows C++不了解

推薦書目:UNIX高級環境編程,UNIX網路編程,卷一。C++只不過是你使用這些技術的方式,不管你使用C還是C++,你都可以使用從這兩本書中學習到很多有用的知識,但是不能保證你就可以寫出高質量的伺服器程序。

10、有沒有用C或c++寫的web伺服器

cpp-net lib cpp-netlib: The C++ Network Library,號稱是要進入標準的,但是感覺還不stable;
facebook做了一個HTTP庫 facebook/proxygen · GitHub,只對Linux系統比較友好;
另外還有一個叫pion的HTTP庫 splunk/pion · GitHub

C/C++好的網路庫有很多,像asio, libevent, libuv等的性能都是極好的,可以在這個基礎上加上HTTP協議解析,比如用joyent的http_parser,然後就是處理HTTP協議本身了,但這個時候問題就來了,是支持到1.1還是2.0?要不要支持SPDY、WebSocket?

沒有GC的語言處理字元串是很虐心的,如果一定要強求用C++,那我只能安慰題主:node也是C++寫的,你就當node的框架是C++ Web伺服器咯~

更好的選擇是用nginx,靠譜,實用。

與c寫伺服器相關的知識