windows_tcp简单代码

文章内容:
一个简单的显示windows平台下c++tcp的代码

  1. 客户端代码已上传
  2. 服务器代码未验证
  3. 方便自己日后使用
客户端:
#if _MSC_VER >=1600 //VS2010版本号是1600#pragma execution_character_set("utf-8")
#endif
#include "mynetdump.h"using namespace std;MyNetDump::MyNetDump(QObject *parent): QThread(parent)
{}MyNetDump::~MyNetDump()
{closesocket(clientSocket);WSACleanup();this->wait();
}void MyNetDump::InitWincap(QString IP, int port, int ui_count)
{m_count = ui_count;WSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0){qDebug() << "Failed to initialize winsock";return;}clientSocket = socket(AF_INET, SOCK_STREAM, 0);if (clientSocket == INVALID_SOCKET){qDebug() << "Failed to create socket";return;}serverAddress.sin_family = AF_INET;serverAddress.sin_port = htons(port);serverAddress.sin_addr.s_addr = inet_addr(IP.toStdString().c_str());// // 设置连接超时时间// int timeout = 5000; // 5秒// setsockopt(clientSocket, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof(timeout));// setsockopt(clientSocket, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout));if (::connect(clientSocket, (struct sockaddr *)&serverAddress, sizeof(serverAddress)) == SOCKET_ERROR){qDebug() << "Failed to connect to server";return;}this->start();
}void MyNetDump::run()
{while(isRunning()){char buffer[4096];memset(buffer, 0, sizeof(buffer));int len = recv(clientSocket, buffer, sizeof(buffer), 0);if (len == SOCKET_ERROR){qDebug() << "Failed to receive data from server";return;}QString str = QString(QLatin1String(buffer));emit sigRecvMsg(str, m_count);msleep(5);}
}
服务器代码
#include <iostream>
#include <winsock2.h>#pragma comment(lib, "ws2_32.lib")int main() {WSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {std::cout << "Failed to initialize winsock" << std::endl;return -1;}SOCKET serverSocket = socket(AF_INET, SOCK_STREAM, 0);if (serverSocket == INVALID_SOCKET) {std::cout << "Failed to create socket" << std::endl;return -1;}sockaddr_in serverAddress;serverAddress.sin_family = AF_INET;serverAddress.sin_port = htons(8080);serverAddress.sin_addr.s_addr = INADDR_ANY;if (bind(serverSocket, (struct sockaddr*)&serverAddress, sizeof(serverAddress)) == SOCKET_ERROR) {std::cout << "Failed to bind socket" << std::endl;return -1;}if (listen(serverSocket, SOMAXCONN) == SOCKET_ERROR) {std::cout << "Failed to listen on socket" << std::endl;return -1;}std::cout << "Waiting for incoming connections..." << std::endl;SOCKET clientSocket;sockaddr_in clientAddress;int clientAddressSize = sizeof(clientAddress);while ((clientSocket = accept(serverSocket, (struct sockaddr*)&clientAddress, &clientAddressSize)) != INVALID_SOCKET) {std::cout << "Client connected" << std::endl;char buffer[4096];memset(buffer, 0, sizeof(buffer));if (recv(clientSocket, buffer, sizeof(buffer), 0) == SOCKET_ERROR) {std::cout << "Failed to receive data from client" << std::endl;break;}std::cout << "Received data from client: " << buffer << std::endl;const char* response = "Hello from server!";if (send(clientSocket, response, strlen(response), 0) == SOCKET_ERROR) {std::cout << "Failed to send data to client" << std::endl;break;}closesocket(clientSocket);std::cout << "Client disconnected" << std::endl;}closesocket(serverSocket);WSACleanup();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/688764.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机构内部教程】Jmeter性能测试【一】:性能测试全套教程

性能测试的概念 性能测试是指通过特定方式&#xff0c;对被测系统按照一定策略施加压力&#xff0c;获取系统 响应时间、TPS&#xff08;Transaction Per Second&#xff09;、吞吐量、资源利用率等性能指标&#xff0c;以期保证生产系统的性能能够满足用户需求的过程。 性能…

【漏洞复现-通达OA】通达OA getcallist存在前台SQL注入漏洞

一、漏洞简介 通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台。通达OA为各行业不同规模的众多用户提供信息化管理能力,包括流程审批、行政办公、日常事务、数据统计…

放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结

Spring For All 社区作者&#xff1a; 纯洁&#xff0c;原文地址 传送门 上次写了一篇文章叫Spring Cloud在国内中小型公司能用起来吗?介绍了Spring Cloud是否能在中小公司使用起来&#xff0c;这篇文章是它的姊妹篇。其实我们在这条路上已经走了一年多&#xff0c;从16年初到…

vue3 之 数据格式化函数

在很多项目中&#xff0c;都会有数据字典表&#xff0c;前端通过请求后端拿到数据字典表里的数据&#xff0c;一般在页面列表上面状态数据都会是返回的数字&#xff0c;前端需要把数字转换成字典表里对应的数据值&#xff0c;下面写了一个前端写死的数据&#xff0c;stateMap里…

《游戏引擎架构》--学习

内存管理 优化动态内存分配 维持最低限度的堆分配&#xff0c;并且永不在紧凑循环中使用堆分配 容器 迭代器 未完待续。。。

C++八股—怎么把左值变成右值

左值&#xff08;lvalue&#xff09;和右值&#xff08;rvalue&#xff09;是C中一个重要的概念&#xff0c;用于描述表达式的属性。简单来说&#xff1a; 左值&#xff08;lvalue&#xff09;&#xff1a;指向内存位置的表达式&#xff0c;可以出现在赋值运算符的左边或右边。…

Stable Diffusion ComfyUI安装详细教程

上一篇文章介绍了sd-webui的安装教程&#xff0c;但学习一下ComfyUI这种节点流程式的对理解AI绘画有较大帮助&#xff0c;而且后期排查错误会更加方便&#xff0c;熟练后用这种方式做AI绘画可玩性会更多。 文章目录 一、安装包说明二、安装文件介绍三、安装步骤四、汉化五、云主…

Spring 事务原理总结七

今天是二零二四年二月十八&#xff0c;农历正月初九。同时今天也是农历新年假期后的第一个工作日。我的内心既兴奋&#xff0c;又担忧&#xff0c;更急躁。兴奋是因为假期后的第一个工作日工作轻松&#xff1b;担忧是因为经过了这么长时间&#xff0c;我依旧没搞明白Spring事务…

【论文解读】Latency-Aware Collaborative Perception

Latency-Aware Collaborative Perception 摘要引言方法SystemSyncNet 实验 摘要 协作感知最近显示出提高单智能体感知感知能力的巨大潜力。现有的协同感知方法通常考虑理想的通信环境。然而&#xff0c;在实践中&#xff0c;通信系统不可避免地存在延迟问题&#xff0c;导致安…

人工智能技术应用笔记(一):SORA已来,AI将开启新纪元

目录 01. OpenAI王炸级产品视频生成模型Sora发布 02. Sora发布的潜在影响 ▎C端 / 对于普通人 ▎B端 / 对于商业公司 03. 该如何看待Sora&#xff1f; 1.拥抱变化&#xff0c;让自己成为身边最懂AI的人 2.想象自己是一家一人公司的创始人 3.保持好奇心&…

抓包分析 TCP 协议

TCP 协议是在传输层中&#xff0c;一种面向连接的、可靠的、基于字节流的传输层通信协议。 环境准备 对接口测试工具进行分类&#xff0c;可以如下几类&#xff1a; 网络嗅探工具&#xff1a;tcpdump&#xff0c;wireshark 代理工具&#xff1a;fiddler&#xff0c;charles&…

JavaScript:隐式类型转换与显式类型转换

文章目录 隐式类型转换&#xff08;Implicit Type Conversion&#xff09;1、字符串与数字的转换2、非布尔值到布尔值的转换3、在相等性比较中的转换4、对象到基础类型的转换5、在算术运算符中的其他转换 显式类型转换&#xff08;Explicit Type Conversion&#xff09;1、Numb…

学员回访 | 天爷啊!我找到月薪16K的工作了!

终于轮到我说了&#xff01;&#xff01;&#xff01;我&#xff01;&#xff01;&#xff01;这一刻&#xff01;&#xff01;&#xff01;我感觉全世界都没有我幸福&#xff01;&#xff01;&#xff01;普通二本学历的我&#xff0c;竟然真的找到了一个16k的工作&#xff01…

面试:正确率能很好的评估分类算法吗

正确率&#xff08;accuracy&#xff09; 正确率是我们最常见的评价指标&#xff0c;accuracy (TPTN)/(PN)&#xff0c;正确率是被分对的样本数在所有样本数中的占比&#xff0c;通常来说&#xff0c;正确率越高&#xff0c;分类器越好。 不同算法有不同特点&#xff0c;在不同…

上传包到npm

切换自己的npm源&#xff08;需要切到npm源 我npm注册的账户&#xff09; 切换为npm源&#xff1a;npm config set registry https://registry.npmjs.org 添加用户 npm adduser 查看是否成功 npm who am i 发包 npm publish 删除指定包版本 npm unpublish 【包名版本号】

springboot745简历系统

springboot745简历系统 获取源码——》公主号&#xff1a;计算机专业毕设大全

绝绝子!你的服务器赞助,我们的开源社区就能飞跃式升级,你绝对不想错过

在当今这个信息爆炸的时代&#xff0c;学习已经成为了我们生活中不可或缺的一部分。然而&#xff0c;随着互联网的高速发展&#xff0c;越来越多的技术知识被涌现出来&#xff0c;让人们在学习的道路上感到困惑和迷茫。为了解决这个问题&#xff0c;我们团队正在开发一个开源项…

尝试以语法对照表格形式学习新语言:c,rust

以语法对照表格形式学习新语言&#xff0c;以rust为例。 关于rust的个人看法&#xff1a; 能否替代c&#xff1f;部分场景可以&#xff0c;长远看并不会。如果c再扩一些关键字&#xff0c;类似cpp的吸星大法式扩充&#xff0c;rust并不具备优势。解决了c的内存管理问题&#x…

【JavaEE】_HTTP响应

目录 1. 首行 2. 报头header 3.空行 4. 正文body 1. 首行 响应首行&#xff1a;版本号状态码状态码描述&#xff1b; HTTP状态码描述了这次响应的结果&#xff08;比如成功、失败&#xff0c;以及失败原因等&#xff09;&#xff1b; 1. HTTP状态码有&#xff1a; &#…

Vue框架与前端部署:构建现代化Web应用的利器

在当今数字化时代&#xff0c;Web应用的开发已成为企业业务发展的关键一环。前端开发作为Web应用的重要组成部分&#xff0c;扮演着至关重要的角色。Vue框架作为一种现代化的前端开发工具&#xff0c;以其简洁易用、高效灵活的特点备受开发者青睐。而前端部署则是将开发的前端代…