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

c伺服器代碼

發布時間:2020-10-18 06:54:48

1、c/s模式伺服器的架構

1、c/s、b/s是當下兩種伺服器架構模型。
2、c/s架構是指客戶端/伺服器的架構,需要同時編寫兩套代碼,即客戶端一套,服務端一套,所以開發起來速度較慢,日後的維護工作量也較大。
3、b/s架構是指瀏覽器/伺服器構架,只需要編寫伺服器端的代碼即可,開發完成了,就可以將應用部署到一些中間伺服器上來發布自己的運用,拿web應該用來說,這些伺服器有IIS、jboss、weblogic、websphere、tomcat等等。
4、客戶端與伺服器交互時,伺服器會根據客戶端的不同請求進行相應的業務處理,之後將結果返回對客戶端。

以上只是簡單的描述了下c/s、b/s架構,更詳細說明樓主可以網上找些相關資料了解。

有問題歡迎提問,滿意請採納!

2、C語言客戶端與伺服器

這是WINDOWS的連網代碼吧?
WSDstartup初始
socket創建套節字
bing監聽
sendto發送
sockaddr_in IP結構體

3、用C語言編寫伺服器端和客戶機端的關鍵部分代碼!

//服務端 C++
#include "stdafx.h"
#include "stdio.h"
#include "winsock2.h"
#include <vector>
using std::vector;

SOCKET s;
vector<SOCKET> cc;

void onAccept()
{
sockaddr_in sa;
int add_len = sizeof(sa);
SOCKET c = accept(s,(sockaddr*)&sa,&add_len);
if(c!=INVALID_SOCKET)
{
printf("client:%s port:%d connected!\n",inet_ntoa(sa.sin_addr),sa.sin_port);
send(c,"hello",5,0);
cc.push_back(c);
}
else
{
printf("invalid connect\n");
}
}

void onRecv(const fd_set &fs)
{
for(int i=0;i<cc.size();++i)
{
if(FD_ISSET(cc[i],&fs))
{
char buffer[256]={0};
int rc= recv(cc[i],buffer,255,0);
if(rc>0)
{
printf("recv msg:%s\n",buffer);
send(cc[i],buffer,strlen(buffer)+1,0);
}
else if(rc == SOCKET_ERROR)
{
printf("recv msg failed:%d\n",::WSAGetLastError());
closesocket(cc[i]);
cc.erase(cc.begin()+i);
break;
}
}
}
}

int main(int argc, char* argv[])
{
//init
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD( 2, 2 );
WSAStartup( wVersionRequested, &wsaData );

s = socket(AF_INET,SOCK_STREAM,0);
if(s!=INVALID_SOCKET)
{
printf("create socket success!\n");
}

{
sockaddr_in sa;
sa.sin_family = AF_INET;
sa.sin_port = htons( 1500 );
sa.sin_addr.s_addr = 0 ; //*²»Ö¸¶¨µØÖ·
int rc = bind(s,(sockaddr *)&sa,sizeof(sa));
if(rc == SOCKET_ERROR)
{
printf("bind failed:%d\n",::WSAGetLastError());
return -1;
}
}

listen(s,SOMAXCONN);

timeval timeout={0,100};

while(true)
{
fd_set fs;
FD_ZERO(&fs);
FD_SET(s,&fs);

int rc = select(0,&fs,0,0,&timeout);
if(rc>0)
{
onAccept();
}
else if(rc == 0)
{
//printf("no connect!\n");
}
else
{
printf("select1 error:%d\n",::WSAGetLastError());
}

if(cc.size()>0)
{
FD_ZERO(&fs);
for(int i=0;i<cc.size();++i)
{
FD_SET(cc[i],&fs);
}

rc = select(0,&fs,0,0,&timeout);
if(rc>0)
{
onRecv(fs);
}
else if(rc == 0)
{
//printf("no recv!\n");
}
else
{
printf("select2 error:%d\n",::WSAGetLastError());
}
}
}

closesocket(s);

//clean
WSACleanup( );
return 1;
}

//=====================[client]====================
#include "stdafx.h"
#include <stdio.h>
#include <winsock2.h>
#include <windows.h>
#include <process.h>

SOCKET c;

unsigned int __stdcall myrecv(void *)
{
while(true)
{
char recv_buffer[256]={0};
int rc =recv(c,recv_buffer,255,0)>0;
if(rc>0)
{
printf("recv:%s\n",recv_buffer);
}
else if(rc==SOCKET_ERROR)
{
printf("recv failed:%d\n",::WSAGetLastError());
break;
}
}
_endthreadex(0);
return 0;
}

int main(int argc, char* argv[])
{
//init
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD( 2, 2 );
WSAStartup( wVersionRequested, &wsaData );

c = socket(AF_INET,SOCK_STREAM,0);
if(c!=INVALID_SOCKET)
{
printf("create socket success!\n");
}

//connect
{
sockaddr_in sa;
sa.sin_family = AF_INET;
sa.sin_port = htons( 1500 );
sa.sin_addr.s_addr = inet_addr("127.0.0.1") ; //*²»Ö¸¶¨µØÖ·
int rc = connect(c,(sockaddr *)&sa,sizeof(sa));
if(rc == SOCKET_ERROR)
{
printf("connect failed:%d\n",::WSAGetLastError());
return -1;
}
}

_beginthreadex(0,0,&myrecv,0,0,0);

int count = 0;
timeval timeout={0,100};
while(true)
{
char send_buffer[256]={0};
sprintf(send_buffer,"s%d",count++);
int rc = send(c,send_buffer,strlen(send_buffer),0);
if(rc>0)
{
printf("send:%s\n",send_buffer);
}
else if(rc==SOCKET_ERROR)
{
printf("send failed:%d\n",::WSAGetLastError());
break;
}
}

closesocket(c);
//clean
WSACleanup( );
return 0;
}

4、c#c/s結構所謂伺服器端代碼,

伺服器端可以用c#,也可以用其它語言,只要和客服端的通信協議和格式一致就行。建議先看看網路編程的相關內容

5、如何用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文件連接 進來。

6、2008伺服器電腦 異常代碼c000005

appcrash直譯就是 程序裝車 很多都是和IE的插件有關
運行-msconfig-啟用 將可疑的啟動載入項都去掉,重啟試試看吧······

7、伺服器藍屏代碼c00000218如何處理

1、如果你是組裝電腦,考慮是不是硬體兼容性問題引起起藍屏
2、可以打開主機箱,給你的電源、cpu、顯卡等風扇吹吹灰塵,清潔一下顯卡和內存條。
3、是否中毒(有些導致藍屏的病毒他很頑固,如果是中病毒反復殺毒無效,請用360急救箱,它是強力查殺木馬病毒的系統救援工具,實在不行格式化)。
4、是否有軟體沖突(卸載一些不常用的,可選用360衛士之類來卸載,同時清理一下開機啟動項)。

8、如何用C語言開發一個通用web伺服器?

用C語言開發WEB,可以用C++BUILDER6,稱ISAPI,一般人可能做不起來,有點麻煩;
唯一是速度很快,別人看不到源碼,掌握了編程套路,也可以開發應用;
缺點:
1。不是解釋性語言,做的WEB調試非常麻煩;現在做WEB開發的,用C#、JAVA較多;都是解釋性的語言;
2。因為是.DLL的二進制代碼,一般商業網站不給予運行的環境,因為網站伺服器會被你可能搞癱,安全性得不到保障;所以,你得自備網頁伺服器;
3。得不到技術支持,因為沒幾個人會這種開發;

9、網站空間能不能運行C/C++伺服器代碼

「虛擬主機」不行。最常見的「空間」都是虛擬主機,有FTP許可權,以及web界面下簡單的一些控制,但是不能遠程登錄,無法執行網頁後台腳本以外的其他程序。

對於你的需求,應該考慮虛擬專用伺服器(VPS)或者獨立主機。前者相對後者會便宜一些。不過如果只是拿來跑一個或兩個自己玩玩而已的小的伺服器程序,可能也會感覺比較貴吧……

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

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

與c伺服器代碼相關的知識