另一篇:在终端/vscode下实现C++TCP通讯
Socket套接字
模板理解:
是计算机网络中实现进程间通信的核心机制,本质上是对网络通信端点的抽象
通过IP地址+端口号唯一标识通信端点
构成“五元组”(协议、源IP、源端口、目标IP、目标端口)以精准定位通信双方
需要添加两个头文件(vs环境)
宏定义 | 针对的库/API | 典型警告函数案例 | 推荐使用场景 | 定义位置要求 |
---|---|---|---|---|
_CRT_SECURE_NO_WARNINGS |
C 标准库 | scanf , strcpy |
需兼容旧代码或跨平台项目 | 所有头文件之前 |
_WINSOCK_DEPRECATED_NO_WARNINGS |
Windows Sockets (Winsock) | inet_addr , gethostbyname |
需维护旧网络代码或快速原型开发 | Winsock 头文件之前 |
或者项目 右键 属性 C++ SDL关掉
服务端:
服务端代码:
#define _CRT_SECURE_NO_WARNINGS //在VS能用scanf
#define _WINSOCK_DEPRECATED_NO_WARNINGS //维护旧代码
#include <stdio.h>
//#include<iostream>
#include<winsock2.h>
#pragma comment(lib,"ws2_32.lib")
/*#pragma:触发编译器特殊处理的指令关键字。
comment:#pragma的子指令,表示“添加注释”(但此处并非普通注释,而是控制链接的特殊用法)。
lib:comment的参数,表示“与库文件相关的注释”。
"ws2_32.lib":具体的库文件名(需用双引号包裹)。*/
//using namespace std;
int main()
{
//windows上使用开启网络权限 初始化
WSADATA wsaData;//Winsock(Windows Sockets)Application应用程序;网络编程API
WSAStartup(MAKEWORD(2, 2), &wsaData);//请求 Winsock 2.2 版本
/*使用Winsock库前必须调用WSAStartup();初始化退出时需用WSACleanup()释放 */
//cout<<"hello"<<'\n';
//1.创建socket套接字
SOCKET listen_