1、有没有用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,靠谱,实用。
2、用c语言写socket编写服务端
这个可以有的。我截图给你看看
研究了这么久。现在也能独立完成一个简单的sock了。QQ2638512393.欢迎你加我一起学习探讨。呵呵
3、求助,纯C写服务器还是C++写服务器的迷茫
不大的话用C写,很大的话用C++。即使用C也可以模拟出C++的class,叫abstract data type
4、linux系统下用c或c++编写一个简单的服务器,只要能接收各个用户信息并做相应的回应就行。
我自己写了一个http服务器,可以手动配置和通过配置文件配置,你如果要的话继续追问一下我,我可以发给你。但是具体如何使用的话,可能还需要我说明一下。
5、linux系统用C语言写个视频服务器,求老前辈们指导
我的c语言只有二级水平,班门弄斧了。
似乎,linux本身就有几个不错的开源视频服务器,
如果要求不高的话可以直接使用他们的;
如果他们的不能达到要求,可以使用c些一些代码做转换,然后使用popen,system之类的调用;
或者,借鉴开源的视频服务器代码自己深度加工;
gstreamer本身就是专门处理视频流的,可以看看能不能用上。
6、用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;
}
7、c怎么s架设服务器
没有授权不能利用客户端,你不用编写用户登录界面?
8、如何搭建C/S中的服务器端
1、确定客户端和服务端之间采用的序列化和反序列化的交换格式,可以采用的有XML JSON PROTOBUF等等
2、确定了交换格式以后开始编写程序
3、服务端编程大部分都是处理RPC,难点就是在与客户端连接和接收数据这一块
http is base on ftp:
http app layer
--------
ftp translation layer.
如果我的回答没帮助到您,请继续追问。
9、c/c++写服务器一般用什么方式访问数据库的?
要做服务器端的话数据库就是放在你的服务器上的, 数据库会提供相应的访问接口, 具体使用方式可以搜一下"C++连接数据库"之类的
http是客户端访问服务器才用得到, 直接操作数据库的总是服务器端而不是客户端
10、做一个C/S架构的程序,是先编服务器好,还是先编辑客户端好?
首先,你要选好技术路线。
其次,因为是C/S程序,涉及到两个进程的通讯,所以你需要先定义好两者通讯的基础设施层,如:通讯方式,通讯协议,以及相关的序列化、反序列化API
然后就可以分别编写服务器或者客户端程序了。
说到这里,你可能也看清楚我想表达的意思了,先编客户端或者先编服务器其实都无所谓。