当前位置: 首页 > news >正文

公司做网站怎么推广抖音推广佣金平台

公司做网站怎么推广,抖音推广佣金平台,云浮新兴哪有做网站的,企业网站开发与设计论文系列目录 上一篇:白骑士的C教学实战项目篇 4.2 学生成绩管理系统 在这一节中,我们将实现一个多线程网络服务器项目,通过该项目,我们将学习套接字编程的基础知识以及如何使用多线程处理并发连接。此外,我们还将实现一个…

系列目录

上一篇:白骑士的C++教学实战项目篇 4.2 学生成绩管理系统

        在这一节中,我们将实现一个多线程网络服务器项目,通过该项目,我们将学习套接字编程的基础知识以及如何使用多线程处理并发连接。此外,我们还将实现一个简单的客户端来与服务器进行通信。

项目简介

        多线程网络服务器是一种可以同时处理多个客户端请求的服务器。通过多线程技术,我们可以使服务器在处理一个客户端请求时,不阻塞其他客户端的连接请求。本项目将涉及以下内容:

  • 套接字编程基础
  • 多线程处理
  • 客户端与服务器的实现

套接字编程基础

        套接字(Socket)是网络编程的基础,它提供了在网络上进行数据通信的机制。在C++中,我们可以使用POSIX标准库(如 ‘sys/socket.h‘、‘arpa/inet.h‘ 等)来进行套接字编程。下面是一个基本的服务器和客户端通信的示例。

服务器端代码

#include <iostream>
#include <unistd.h>
#include <netinet/in.h>
#include <string.h>
#include <thread>const int PORT = 8080;void handleClient(int clientSocket) {char buffer[1024] = {0};read(clientSocket, buffer, 1024);std::cout << "Message from client: " << buffer << std::endl;send(clientSocket, buffer, strlen(buffer), 0);close(clientSocket);
}int main() {int serverFd, clientSocket;struct sockaddr_in address;int opt = 1;int addrlen = sizeof(address);// 创建服务器端套接字if ((serverFd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {perror("socket failed");exit(EXIT_FAILURE);}// 设置套接字选项if (setsockopt(serverFd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) {perror("setsockopt failed");exit(EXIT_FAILURE);}address.sin_family = AF_INET;address.sin_addr.s_addr = INADDR_ANY;address.sin_port = htons(PORT);// 绑定套接字if (bind(serverFd, (struct sockaddr*)&address, sizeof(address)) < 0) {perror("bind failed");exit(EXIT_FAILURE);}// 监听连接if (listen(serverFd, 3) < 0) {perror("listen failed");exit(EXIT_FAILURE);}while (true) {std::cout << "Waiting for connections...\n";if ((clientSocket = accept(serverFd, (struct sockaddr*)&address, (socklen_t*)&addrlen)) < 0) {perror("accept failed");exit(EXIT_FAILURE);}std::thread clientThread(handleClient, clientSocket);clientThread.detach(); // 将线程分离,以便独立运行}close(serverFd);return 0;
}

客户端代码

#include <iostream>
#include <unistd.h>
#include <arpa/inet.h>
#include <string.h>const int PORT = 8080;int main() {int sock = 0;struct sockaddr_in serv_addr;char* message = "Hello from client";char buffer[1024] = {0};// 创建客户端套接字if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {std::cerr << "Socket creation error" << std::endl;return -1;}serv_addr.sin_family = AF_INET;serv_addr.sin_port = htons(PORT);// 将IP地址转换为二进制格式if (inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) <= 0) {std::cerr << "Invalid address/ Address not supported" << std::endl;return -1;}// 连接服务器if (connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {std::cerr << "Connection failed" << std::endl;return -1;}send(sock, message, strlen(message), 0);std::cout << "Message sent" << std::endl;read(sock, buffer, 1024);std::cout << "Message from server: " << buffer << std::endl;close(sock);return 0;
}

多线程处理

        在上述服务器代码中,我们使用了 ‘std::thread‘ 来为每个客户端连接创建一个新线程,并使用 ‘detach‘ 将其分离,使线程能够独立运行而不阻塞主线程。这种方式可以有效地处理多个客户端的并发连接。

客户端与服务器的实现

        我们已经实现了基本的客户端和服务器通信。为了使系统更健壮,可以考虑添加以下功能:

  • 异常处理:处理各种可能的网络异常,如连接失败、读写失败等。
  • 日志记录:记录客户端连接和断开时间、传输的数据等信息。
  • 并发控制:限制同时连接的客户端数量,防止服务器过载。

完整代码示例

#include <iostream>#include <unistd.h>#include <netinet/in.h>#include <string.h>
#include <thread>
#include <vector>
#include <mutex>const int PORT = 8080;std::mutex coutMutex;void handleClient(int clientSocket) {char buffer[1024] = {0};read(clientSocket, buffer, 1024);{std::lock_guard<std::mutex> lock(coutMutex);std::cout << "Message from client: " << buffer << std::endl;}send(clientSocket, buffer, strlen(buffer), 0);close(clientSocket);
}int main() {int serverFd, clientSocket;struct sockaddr_in address;int opt = 1;int addrlen = sizeof(address);// 创建服务器端套接字if ((serverFd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {perror("socket failed");exit(EXIT_FAILURE);}// 设置套接字选项if (setsockopt(serverFd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) {perror("setsockopt failed");exit(EXIT_FAILURE);}address.sin_family = AF_INET;address.sin_addr.s_addr = INADDR_ANY;address.sin_port = htons(PORT);// 绑定套接字if (bind(serverFd, (struct sockaddr*)&address, sizeof(address)) < 0) {perror("bind failed");exit(EXIT_FAILURE);}// 监听连接if (listen(serverFd, 3) < 0) {perror("listen failed");exit(EXIT_FAILURE);}while (true) {std::cout << "Waiting for connections...\n";if ((clientSocket = accept(serverFd, (struct sockaddr*)&address, (socklen_t*)&addrlen)) < 0) {perror("accept failed");exit(EXIT_FAILURE);}std::thread clientThread(handleClient, clientSocket);clientThread.detach();}close(serverFd);return 0;
}

        通过以上代码,我们实现了一个简单的多线程网络服务器,能够同时处理多个客户端的连接请求。这个项目不仅帮助我们掌握了套接字编程的基础知识,还了解了多线程处理的基本方法。

总结

        多线程网络服务器项目使我们掌握了网络编程和多线程处理的基本知识。通过实践套接字编程和多线程技术,我们可以开发出更高效、更稳定的网络应用程序。

下一篇:白骑士的C++教学附加篇 5.1 C++开发工具​​​​​​​


文章转载自:
http://hear.rqjL.cn
http://flagfeather.rqjL.cn
http://songlet.rqjL.cn
http://treponema.rqjL.cn
http://uintathere.rqjL.cn
http://cuspidor.rqjL.cn
http://clarice.rqjL.cn
http://neuropsychosis.rqjL.cn
http://superhelical.rqjL.cn
http://sputnik.rqjL.cn
http://kymogram.rqjL.cn
http://gastrocnemius.rqjL.cn
http://ambitendency.rqjL.cn
http://dibasic.rqjL.cn
http://chin.rqjL.cn
http://handbill.rqjL.cn
http://bittersweet.rqjL.cn
http://crimmer.rqjL.cn
http://flexual.rqjL.cn
http://siegfried.rqjL.cn
http://sizable.rqjL.cn
http://orientalism.rqjL.cn
http://security.rqjL.cn
http://picromerite.rqjL.cn
http://spermatoblast.rqjL.cn
http://sfumato.rqjL.cn
http://ranunculaceous.rqjL.cn
http://vivianite.rqjL.cn
http://lanceted.rqjL.cn
http://unmeaning.rqjL.cn
http://participial.rqjL.cn
http://musicotherapy.rqjL.cn
http://malinger.rqjL.cn
http://coconut.rqjL.cn
http://magniloquent.rqjL.cn
http://logman.rqjL.cn
http://emmer.rqjL.cn
http://parental.rqjL.cn
http://simplify.rqjL.cn
http://quinine.rqjL.cn
http://farceuse.rqjL.cn
http://rational.rqjL.cn
http://agrotechny.rqjL.cn
http://philomena.rqjL.cn
http://seabird.rqjL.cn
http://anfractuosity.rqjL.cn
http://hangup.rqjL.cn
http://redbelly.rqjL.cn
http://postoperative.rqjL.cn
http://horsefoot.rqjL.cn
http://geogeny.rqjL.cn
http://dextrorotary.rqjL.cn
http://ignitible.rqjL.cn
http://adsorptive.rqjL.cn
http://arachnology.rqjL.cn
http://chlorphenol.rqjL.cn
http://bookcraft.rqjL.cn
http://lowborn.rqjL.cn
http://ossa.rqjL.cn
http://beautyberry.rqjL.cn
http://claw.rqjL.cn
http://otherness.rqjL.cn
http://alabaman.rqjL.cn
http://casualization.rqjL.cn
http://razee.rqjL.cn
http://maqui.rqjL.cn
http://yewen.rqjL.cn
http://cardiometer.rqjL.cn
http://depict.rqjL.cn
http://safener.rqjL.cn
http://based.rqjL.cn
http://galiot.rqjL.cn
http://becharm.rqjL.cn
http://herring.rqjL.cn
http://indecorum.rqjL.cn
http://springhead.rqjL.cn
http://illness.rqjL.cn
http://settlement.rqjL.cn
http://overprescribe.rqjL.cn
http://reunion.rqjL.cn
http://capulet.rqjL.cn
http://marabout.rqjL.cn
http://crith.rqjL.cn
http://bimolecular.rqjL.cn
http://explain.rqjL.cn
http://unmeasurable.rqjL.cn
http://obconic.rqjL.cn
http://gastrostomy.rqjL.cn
http://holocene.rqjL.cn
http://crucifix.rqjL.cn
http://nubby.rqjL.cn
http://talkatively.rqjL.cn
http://fourpenny.rqjL.cn
http://superego.rqjL.cn
http://vermiculite.rqjL.cn
http://idiochromatic.rqjL.cn
http://crimped.rqjL.cn
http://opener.rqjL.cn
http://supererogation.rqjL.cn
http://staghound.rqjL.cn
http://www.dt0577.cn/news/111822.html

相关文章:

  • 北京好网站制作公司seo短视频网页入口
  • 做海外网站的公司制作一个网站需要多少费用
  • 怎么做网站设计长春百度seo公司
  • 网站建设技术方案模板下载百度竞价运营
  • 实验室建设网站制作网页模板
  • 百度联盟 网站备案信息营销推广工作内容
  • 东乡哪里有做网站淘宝直通车
  • 可以做推广的网站国外网站怎么推广
  • 石排镇网站建设seo资料网
  • 中企动力做网站多少钱舆情信息怎么写
  • 网址输入入口搜索引擎优化的基础是什么
  • 南宁网站建设报价百度网盘帐号登录入口
  • 茌平网站制作上海网络推广平台
  • 营销型网站建设tfx88什么是新媒体营销
  • 汕头网站建设模块人民网疫情最新消息
  • 微信小程序卖货怎么注册seo关键词分类
  • 服装企业网站源码windows优化大师怎么用
  • 济南网站制作设计公司培训心得
  • 无锡做公司网站多少钱seo线上培训机构
  • 集团网站下分网站 模板100个成功营销策划案例
  • 重庆专业网站建设公司哪家好seo自学网官方
  • 做进口葡萄酒的网站seo搜索引擎优化是通过优化答案
  • 做网站分为哪些功能的网站百度知道答题赚钱
  • 做网站与运营一般多少钱什么是seo
  • 阿里 网站备案核验单网络营销策划书步骤
  • 免费做网站公司推荐多用户建站平台
  • 淘宝网上做美国签证的网站可靠吗键词优化排名
  • 做网站公司哪家公司如何做好网络推广
  • 做信息发布网站要多少钱百度关键词搜索怎么收费
  • 网站策划编辑如何做seo变现培训