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

c++ tcp服务端V1

Server.cpp文件点击查看代码
#include "Server.h"
#include <iostream>
#include <ws2tcpip.h>#pragma comment(lib, "ws2_32.lib")
using namespace std;Server::Server(const std::string& host, uint16_t port): m_address(host), m_port(port), m_fd(INVALID_SOCKET) {
// 初始化网络库WSADATA data;if (WSAStartup(MAKEWORD(2, 2), &data) != 0) {cerr << "socket error" << WSAGetLastError() << endl;return;}// 创建socketm_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (m_fd == INVALID_SOCKET) {cerr << "socket error: " << WSAGetLastError() << endl;return;}// 绑定ip 端口struct sockaddr_in addr;addr.sin_family = AF_INET;addr.sin_port = htonl(port);  // 大端和小端存储, 本地是小端inet_pton(AF_INET, host.data(), &addr.sin_addr);  // ip地址if (bind(m_fd, (struct sockaddr *) &addr, sizeof(addr)) == SOCKET_ERROR) {cerr << "bind error: " << WSAGetLastError() << endl;return;}if (listen(m_fd, 10) == SOCKET_ERROR) {cerr << "listen error: " << WSAGetLastError() << endl;return;};
}
Server::~Server()
{
WSACleanup();
}
int Server::run() {char buf[BUFSIZ];while (m_running) {// 接受连接struct sockaddr_in client_addr;socklen_t addr_len = sizeof(client_addr);SOCKET sock = accept(m_fd, (struct sockaddr *)&client_addr, &addr_len);
//        SOCKET sock = accept(m_fd, NULL, NULL);if (sock == INVALID_SOCKET) {cerr << "accept error: " << WSAGetLastError() << endl;continue;}// 读取客户端ipchar client_ip[INET_ADDRSTRLEN];inet_ntop(AF_INET, &client_addr.sin_addr, client_ip, INET_ADDRSTRLEN);cout << " Client connected from: " << client_ip << endl;int nread = recv(sock, buf, BUFSIZ, 0);if (nread > 0 ) {printf("data is %.*s nread is:%d\n", nread, buf, nread);}else if (nread <=0) {cout << "client close" << endl;closesocket(sock);}}return 0;
}int main() {Server server = Server("127.0.0.1", 8080);server.run();
}
http://www.jsqmd.com/news/398216/

相关文章:

  • GTE-Pro本地化部署避坑指南
  • AI开发-python-milvus向量数据库(2-9 -milvus-数据更新)
  • YOLO12多尺度测试:640×640输入下不同尺寸目标召回率分布图
  • 2026年长沙酱板鸭门店选购指南:趋势、排名与避坑攻略 - 2026年企业推荐榜
  • Lychee-rerank-mm开箱体验:智能图库检索如此简单
  • 软萌拆拆屋案例分享:这些服装拆解图是如何一键生成的
  • vp 2025夏季PAT甲级
  • 2026年评价高的四川消防工程评估/四川消防工程检测厂家选购完整指南 - 行业平台推荐
  • Jimeng AI Studio LoRA风格迁移:Z-Image Turbo跨领域风格复用实践
  • 2026年Q1长沙卤味口味深度评测与品牌选型指南 - 2026年企业推荐榜
  • 零基础使用Qwen3-ForcedAligner:快速实现语音与文字同步
  • MedGemma X-Ray实操手册:stop_gradio.sh/ status_gradio.sh使用全解析
  • Qwen3-ForcedAligner-0.6B开箱即用:5分钟搞定歌词同步
  • Qwen-Turbo-BF16模型量化实战:4倍显存节省方案
  • 人工智能篇---面向对象编程
  • 使用VSCode开发OFA-VE应用的完整工作流
  • AnimateDiff故障排查:常见问题与解决方案大全
  • Git-RSCLIP图文检索:从零开始的学习指南
  • LoRA训练助手效果分享:在LoRA训练中提升细节保留能力的tag结构分析
  • 人工智能篇---命令式编程
  • 人工智能篇---过程式编程
  • Fish Speech 1.5部署教程:从CSDN实例导出镜像到本地K8s集群迁移
  • Hunyuan-MT-7B应用案例:电商多语言商品描述生成
  • 告别复杂配置!SenseVoice-Small ONNX语音识别工具开箱即用指南
  • cv_unet_image-colorization轻量化部署:CPU模式fallback方案(无GPU时降级运行)
  • Fish-Speech-1.5语音克隆:小样本学习优化方案
  • MusePublic Art Studio 惊艳效果展示:AI生成的10幅艺术作品集
  • 零基础5分钟部署QwQ-32B:最强国产推理模型快速上手指南
  • EcomGPT-7B直播带货脚本生成:转化率提升秘籍
  • FLUX.小红书极致真实V2多场景落地:从个人IP打造到企业内容中台建设