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

新浪网站是什么程序做的seo网站推广服务

新浪网站是什么程序做的,seo网站推广服务,常用的网站类型有哪些类型有哪些,地和网站建设一、c 个人测试记录,有问题还请指出,谢谢 参考:C开发基础之网络编程WinSock库使用详解TCP/UDP Socket开发_c udp使用什么库-CSDN博客 代码中Logger测试见文章: c中spdlog的使用/python中logger的使用-CSDN博客 1、main.cpp 收…

一、c++

个人测试记录,有问题还请指出,谢谢

参考:C++开发基础之网络编程WinSock库使用详解TCP/UDP Socket开发_c++ udp使用什么库-CSDN博客

代码中Logger测试见文章: c++中spdlog的使用/python中logger的使用-CSDN博客

1、main.cpp

收发TCP信号:

#include <iostream>
#include <thread>
#include <vector>#include "Logger.h"
#include "SocketManager.h"#pragma warning(disable:4996)int main() {initLogger();SocketManager socket_manager;// 使用 std::thread 并传递成员函数的指针和对象实例的引用std::thread t1(&SocketManager::get_from_tcp, &socket_manager, 11100);// std::thread t2(&SocketManager::get_from_udp, &socket_manager, 11111);std::thread t3(&SocketManager::send_to_tcp, &socket_manager, "123456", "127.0.0.1", 11100);// std::thread t4(&SocketManager::send_to_udp, &socket_manager, "123456", "127.0.0.1", 11111);t1.detach();// t2.detach();t3.detach();// t4.detach();Sleep(6000000);return 0;
}

 运行结果如下:

 收发UDP信号:

#include <iostream>
#include <thread>
#include <vector>#include "Logger.h"
#include "SocketManager.h"#pragma warning(disable:4996)int main() {initLogger();SocketManager socket_manager;// 使用 std::thread 并传递成员函数的指针和对象实例的引用// std::thread t1(&SocketManager::get_from_tcp, &socket_manager, 11100);std::thread t2(&SocketManager::get_from_udp, &socket_manager, 11111);// std::thread t3(&SocketManager::send_to_tcp, &socket_manager, "123456", "127.0.0.1", 11100);std::thread t4(&SocketManager::send_to_udp, &socket_manager, "123456", "127.0.0.1", 11111);// t1.detach();t2.detach();// t3.detach();t4.detach();Sleep(6000000);return 0;
}

 运行结果如下:

2、SocketManager.h

// #pragma once  // 为确保在不同编译环境中使用,可以使用#define的方法
#ifndef	SOCKETMANAGER_H
#define SOCKETMANAGER_H#include <iostream>
#include <stdio.h>
#include <winsock2.h>
#include <string>
#include "Logger.h"#pragma comment(lib, "ws2_32.lib")
#pragma warning(disable:4996)std::string asciiToHex(const std::string& asciiStr); // 将ascii码转为十六进制class SocketManager {
public:SocketManager();~SocketManager();void initialization();  // 初始化套接字库void get_from_udp(int);   // 从客户端接收发来的udp信息void get_from_tcp(int); // 从客户端接收发来的tcp信息void send_to_tcp(std::string, std::string, int);  // 向服务端发送tcp信息void send_to_udp(std::string, std::string, int);  // 向服务端发送udp信息private://定义服务端套接字,接受请求套接字SOCKET ListenSocket_UDP_get;SOCKET ListenSocket_TCP_get;SOCKET SendSocket_UDP_to;SOCKET SendSocket_TCP_to;//服务端/客户端地址SOCKADDR_IN service_UDP_get;SOCKADDR_IN service_TCP_get;SOCKADDR_IN service_UDP_to;SOCKADDR_IN service_TCP_to;
};#endif  // SOCKETMANAGER_H

3、SocketManager.cpp

#include "SocketManager.h"SocketManager::SocketManager() {ListenSocket_UDP_get = INVALID_SOCKET;ListenSocket_TCP_get = INVALID_SOCKET;SendSocket_UDP_to = INVALID_SOCKET;SendSocket_TCP_to = INVALID_SOCKET;
}SocketManager::~SocketManager() {if (ListenSocket_UDP_get != INVALID_SOCKET) {closesocket(ListenSocket_UDP_get);WSACleanup();}if (ListenSocket_TCP_get != INVALID_SOCKET) {closesocket(ListenSocket_TCP_get);WSACleanup();}if (SendSocket_UDP_to != INVALID_SOCKET) {closesocket(SendSocket_UDP_to);WSACleanup();}if (SendSocket_TCP_to != INVALID_SOCKET) {closesocket(SendSocket_TCP_to);WSACleanup();}
}void SocketManager::get_from_udp(int port) {// 初始化套接字库initialization();// 创建套接字ListenSocket_UDP_get = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);if (ListenSocket_UDP_get == INVALID_SOCKET) {logger->error("创建套接字失败:" + WSAGetLastError());std::cout << "创建套接字失败:"<< WSAGetLastError() << std::endl;WSACleanup();exit(0);}//填充服务端信息service_UDP_get.sin_family = AF_INET;  // 设置地址族为 IPv4service_UDP_get.sin_addr.s_addr = INADDR_ANY;  // 将 IP 地址设置为 0.0.0.0,表示绑定到所有本地 IP 地址service_UDP_get.sin_port = htons(port);   // 将端口号转换为网络字节序,并设置为指定的端口号// 绑定套接字if (bind(ListenSocket_UDP_get, (SOCKADDR*)&service_UDP_get, sizeof(service_UDP_get)) == SOCKET_ERROR){logger->error("绑定套接字失败: " + WSAGetLastError());std::cout << "绑定套接字失败: " + WSAGetLastError() << std::endl;closesocket(ListenSocket_UDP_get);WSACleanup();exit(0);}char recvbuf[512];  // 定义接收信息的缓冲区,大小为512字节int iRecvResult;  // 存储接收操作的返回结果sockaddr_in clientAddr;   // 用于存储客户端的地址信息int iAddrLen = sizeof(clientAddr);  // 存储地址结构体的大小do{	std::cout << "服务端正在等待数据发送,请稍候...." << std::endl;// 接收来自客户端的数据iRecvResult = recvfrom(ListenSocket_UDP_get, recvbuf, sizeof(recvbuf), 0, (SOCKADDR*)&clientAddr, &iAddrLen);// std::cout << iRecvResult << std::endl;// 检查接收操作是否成功if (iRecvResult > 0){std::string result(recvbuf, iRecvResult);std::cout << "收到信息:" + result << std::endl;logger->info("收到信息:" + result);// 将接收到的数据发送回客户端// sendto(ListenSocket_UDP, recvbuf, iRecvResult, 0, (SOCKADDR*)&clientAddr, sizeof(clientAddr));}else if (iRecvResult == 0){std::cout << "连接关闭" << std::endl;logger->info("连接关闭");}else{std::cout << "接受信息失败:" << WSAGetLastError() << std::endl;logger->error("接受信息失败:" + WSAGetLastError());closesocket(ListenSocket_UDP_get);WSACleanup();}} while (iRecvResult > 0);closesocket(ListenSocket_UDP_get);WSACleanup();
}void SocketManager::initialization() {//初始化套接字库WORD w_req = MAKEWORD(2, 2);//版本号WSADATA wsadata;int err;err = WSAStartup(w_req, &wsadata);if (err != 0) {std::cout << "初始化套接字库失败!" << std::endl;}//检测版本号if (LOBYTE(wsadata.wVersion) != 2 || HIBYTE(wsadata.wHighVersion) != 2) {std::cout << "套接字库版本号不符!" << std::endl;WSACleanup();}//填充服务端地址信息
}void SocketManager::send_to_tcp(std::string str, std::string ip, int port) {int send_len = 0;// 初始化套接字库initialization();//填充服务端信息service_TCP_to.sin_family = AF_INET;service_TCP_to.sin_addr.S_un.S_addr = inet_addr(ip.c_str());service_TCP_to.sin_port = htons(port);//创建套接字SendSocket_TCP_to = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (SendSocket_TCP_to == INVALID_SOCKET) {logger->error("创建套接字失败:" + WSAGetLastError());std::cout << "创建套接字失败:" << WSAGetLastError() << std::endl;WSACleanup();exit(1);}if (connect(SendSocket_TCP_to, (SOCKADDR*)&service_TCP_to, sizeof(SOCKADDR)) == SOCKET_ERROR) {std::cout << "服务器连接失败:" << WSAGetLastError() << std::endl;logger->error("服务器连接失败:" + WSAGetLastError());WSACleanup();exit(1);}// 发送信息send_len = send(SendSocket_TCP_to, str.c_str(), str.size(), 0);if (send_len < 0) {std::cout << "发送失败:" << WSAGetLastError() << std::endl;logger->error("发送失败:" + WSAGetLastError());}std::cout << send_len << "发送成功" << std::endl;//关闭套接字//closesocket(SendSocket_TCP_to);//释放DLL资源//WSACleanup();
}void SocketManager::get_from_tcp(int port) {// 初始化套接字库initialization();// 创建套接字ListenSocket_TCP_get = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);   // tcp与udp之间有所不同if (ListenSocket_TCP_get == INVALID_SOCKET) {logger->error("创建套接字失败:" + WSAGetLastError());std::cout << "创建套接字失败:" << WSAGetLastError() << std::endl;WSACleanup();exit(1);}//填充服务端信息service_TCP_get.sin_family = AF_INET;  // 设置地址族为 IPv4service_TCP_get.sin_addr.s_addr = INADDR_ANY;  // 将 IP 地址设置为 0.0.0.0,表示绑定到所有本地 IP 地址service_TCP_get.sin_port = htons(port);   // 将端口号转换为网络字节序,并设置为指定的端口号// 绑定套接字if (bind(ListenSocket_TCP_get, (SOCKADDR*)&service_TCP_get, sizeof(service_TCP_get)) == SOCKET_ERROR){logger->error("绑定套接字失败: " + WSAGetLastError());std::cout << "绑定套接字失败: " + WSAGetLastError() << std::endl;closesocket(ListenSocket_TCP_get);WSACleanup();exit(1);}char recvbuf[512];  // 定义接收信息的缓冲区,大小为512字节int iRecvResult;  // 存储接收操作的返回结果int len = 0;//设置套接字为监听状态if (listen(ListenSocket_TCP_get, SOMAXCONN) < 0) {std::cout << "设置监听状态失败:" << WSAGetLastError() << std::endl;logger->error("设置监听状态失败:" + WSAGetLastError());WSACleanup();}std::cout << "服务端正在监听连接,请稍候...." << std::endl;len = sizeof(service_TCP_get);SOCKET ClientSocket = INVALID_SOCKET;  // 初始化 ClientSocket 变量并将其设置为无效的套接字do{std::cout << "服务端正在等待数据发送,请稍候...." << std::endl;ClientSocket = accept(ListenSocket_TCP_get, (SOCKADDR*)&service_TCP_get, &len); // 等待客户端连接请求并接受连接/*accept 函数会阻塞,直到有客户端连接请求到达,然后返回一个新的套接字ListenSocket_TCP_get 是服务器监听的套接字service_TCP_get 是用于存储客户端地址信息的结构体len 是地址结构体的大小,accept 函数调用时会被更新为实际的地址大小*/// std::cout << ClientSocket << std::endl;if (ClientSocket == SOCKET_ERROR) {std::cout << "算法端连接失败:" + WSAGetLastError() << std::endl;logger->error("算法端连接失败:" + WSAGetLastError());WSACleanup();exit(2);}// 接收来自客户端的数据iRecvResult = recv(ClientSocket, recvbuf, sizeof(recvbuf), 0);// 检查接收操作是否成功if (iRecvResult > 0){// std::cout << iRecvResult << std::endl;std::string result(recvbuf, iRecvResult);std::cout << "收到信息:" + result << std::endl;logger->info("收到信息:" + result);// 将接收到的数据发送回客户端// sendto(ListenSocket_UDP, recvbuf, iRecvResult, 0, (SOCKADDR*)&clientAddr, sizeof(clientAddr));}else if (iRecvResult == 0){std::cout << "连接关闭" << std::endl;logger->info("连接关闭");}else{std::cout << "接受信息失败:" << WSAGetLastError() << std::endl;logger->error("接受信息失败:" + WSAGetLastError());closesocket(ListenSocket_UDP_get);WSACleanup();}} while (iRecvResult > 0);closesocket(ListenSocket_TCP_get);WSACleanup();
}void SocketManager::send_to_udp(std::string str, std::string ip, int port) {int send_len = 0;// 初始化套接字库initialization();//填充服务端信息service_UDP_to.sin_family = AF_INET;service_UDP_to.sin_addr.S_un.S_addr = inet_addr(ip.c_str());service_UDP_to.sin_port = htons(port);//创建套接字SendSocket_UDP_to = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);if (SendSocket_UDP_to == INVALID_SOCKET) {logger->error("创建套接字失败:" + WSAGetLastError());std::cout << "创建套接字失败:" << WSAGetLastError() << std::endl;WSACleanup();exit(0);}int iSendResult = sendto(SendSocket_UDP_to, str.c_str(), str.size(), 0, (SOCKADDR*)&service_UDP_to, sizeof(service_UDP_to));if (iSendResult == SOCKET_ERROR) {std::cout << "发送失败:" << WSAGetLastError() << std::endl;logger->error("发送失败:" + WSAGetLastError());}//关闭套接字closesocket(SendSocket_UDP_to);//释放DLL资源WSACleanup();
}std::string asciiToHex(const std::string& asciiStr) {std::string hexStr;for (char c : asciiStr) {unsigned char value = static_cast<unsigned char>(c);hexStr += std::to_string(static_cast<int>(value >> 4)) + std::to_string(static_cast<int>(value & 0x0F));}return hexStr;
}

http://www.hrbkazy.com/news/737.html

相关文章:

  • 上海学网站建设今日军事头条新闻
  • node框架做网站百度指数查询官方网
  • 杭州网站前端建设免费网站免费
  • 昆明网络营销公司哪家比较好江西seo
  • 雄县网站建设打开百度网页版
  • 网站建设售后网上营销网站
  • 天津市建设银行网站广告推广赚钱
  • 做现货黄金看什么网站全网营销推广
  • asp动态网站开发试题衡阳百度推广公司
  • 做的好的国外网站查域名的网址
  • wordpress版seo快速提升排名
  • 北京做企业网站的公司最新消息新闻头条
  • 企业网站备案需要哪些资料互联网营销师培训费用是多少
  • 网上书城 网站建设策划书微信推广广告在哪里做
  • 登封网站建设5118网站如何使用免费版
  • 济南专业做网站公司哪家好产品推广文案怎么写
  • 做新闻网站编辑需要什么线上职业技能培训平台
  • 盂县在线这个网站是谁做的网络营销的作用和意义
  • 网站信息备案管理系统电商网络推广是什么
  • 做牙齿技工找工作去哪个网站百家号查询排名数据查询
  • 怎么做转载小说网站下载百度官方网站
  • 南宁网站建设公司哪家专业seo诊断服务
  • 可信赖的坪山网站建设百度发作品入口在哪里
  • 劳务合同免费模板下载seo优化外包公司
  • 做网站要买服务器吗河南seo外包
  • 网站改版做301网站seo关键词优化
  • 威特视频网站建设方案十大免费域名
  • wordpress建的网站销售管理系统
  • 建设网站的视频下载帮人推广注册app的平台
  • 网站备案资料 下载大数据营销精准营销