【C C++服务器开发】具备丰富功能和可以同时响应多个客服端的服务器_c+(1)
创始人
2024-11-05 19:39:50
0

一、前言

往期博客回顾:

C/C++ 服务器/后台开发学习路线总结及准备

【C/C++服务器开发】什么是服务器?服务器分类及构建一个简单的服务器系统

【C/C++服务器开发】socket网络编程函数接口详解

【C/C++服务器开发】socket网络编程函数接口的灵活运用

之前的服务器只能提供简单的功能,我们可以不断丰富其功能,使其可以提供更加丰富的功能。比如web服务器可以提供网页数据,文件服务器可以提供文件下载等。

此外之前的服务器只能同时响应一个客户端的请求,因此我们需要考虑使用多进程或多线程来改进服务器模型,使其可以同时接收多个客户端的请求。

二、功能更加丰富的服务器

服务器的功能需要根据我们的需求来确定,这边我们只是提供一种思路,一个方向。

比如我们在数据库端保存一份数据,然后客户端可以通过连接服务器端来查询这个数据。

server.cpp

#include
#include
#include
#include
#include
#include
#include
int main(){

//创建套接字
int serv_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

//将套接字和IP、端口绑定
struct sockaddr_in serv_addr;
memset(&serv_addr, 0, sizeof(serv_addr)); //每个字节都用0填充
serv_addr.sin_family = AF_INET; //使用IPv4地址
serv_addr.sin_addr.s_addr = inet_addr(“127.0.0.1”); //具体的IP地址
serv_addr.sin_port = htons(1234); //端口
bind(serv_sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr));

//进入监听状态,等待用户发起请求
listen(serv_sock, 20);

char bufferrev[100];
memset(bufferrev, 0x00, sizeof(bufferrev));
char* buffersnd;

while(1) {

//接收客户端请求
struct sockaddr_in clnt_addr;
socklen_t clnt_addr_size = sizeof(clnt_addr);
int clnt_sock = accept(serv_sock, (struct sockaddr*)&clnt_addr, &clnt_addr_size);

int len = read(clnt_sock, bufferrev, 100-1);
printf(“receive data: %s\n”, bufferrev);

if (strcmp(bufferrev, “wuhan”) == 0) {
strcpy(buffersnd, “you want know wuhan!”);
} else if (strcmp(bufferrev, “guangzhou”) == 0) {
strcpy(buffersnd, “you want know guangzhou!”);
} else if (strcmp(bufferrev, “shenzhen”) == 0) {
strcpy(buffersnd, “you want know shenzhen!”);
} else if (strcmp(bufferrev, “shagnhai”) == 0) {
strcpy(buffersnd, “you want know shanghai!”);
} else {strcpy(buffersnd, “no data about that!”);}

//向客户端发送数据,将从客户端接收的数据反送回去
printf(“server send data to client!\n”);
write(clnt_sock, buffersnd, sizeof(buf

相关内容

热门资讯

绝活儿辅助!广西老友玩老是输怎... 绝活儿辅助!广西老友玩老是输怎么办(辅助挂)都是真的有辅助app(讲解有挂)在进入广西老友玩老是输怎...
法门辅助!福建13水插件(辅助... 法门辅助!福建13水插件(辅助挂)一贯是有辅助技巧(有挂技术)1、许多玩家不知道福建13水插件辅助怎...
办法辅助!潮友会app下载官方... 办法辅助!潮友会app下载官方辅助器(辅助挂)真是真的是有辅助app(有挂教程)该软件可以轻松地帮助...
妙招辅助!邯郸胡乐挂辅助(辅助... 妙招辅助!邯郸胡乐挂辅助(辅助挂)好像存在有辅助插件(有挂方略)1、上手简单,内置详细流程视频教学,...
教程书辅助!乐酷辅助(辅助挂)... 教程书辅助!乐酷辅助(辅助挂)其实存在有辅助脚本(有挂细节)乐酷辅助能透视中分为三种模型:乐酷辅助模...
学习辅助!决战卡五星辅助(辅助... 学习辅助!决战卡五星辅助(辅助挂)本来真的是有辅助软件(有人有挂)学习辅助!决战卡五星辅助(辅助挂)...
绝活辅助!边锋嘉兴麻将辅助器(... 绝活辅助!边锋嘉兴麻将辅助器(辅助挂)真是真的有辅助神器(新版有挂)1、边锋嘉兴麻将辅助器公共底牌简...
举措辅助!枫叶辅助器(辅助挂)... 举措辅助!枫叶辅助器(辅助挂)本来存在有辅助技巧(竟然有挂)1、下载好枫叶辅助器正确养号方法之后点击...
讲义辅助!点我达辅助(辅助挂)... 讲义辅助!点我达辅助(辅助挂)一直存在有辅助技巧(有人有挂)1、点我达辅助辅助器安装包、点我达辅助辅...
模块辅助!威信茶馆有挂的吗(辅... 模块辅助!威信茶馆有挂的吗(辅助挂)一直真的是有辅助脚本(揭秘有挂)1、玩家可以在威信茶馆有挂的吗线...