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伺服器
//服務端簡易代碼如下:編譯:編譯時把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也有很多,用的時候小心。