目录
参考:https://www.cnblogs.com/fengff/p/10984251.html
https://www.bilibili.com/video/BV1s4411T71G?from=search&seid=4213265499048566986
socket通信原理
服务器端
服务器端代码:
// chatserver.cpp
/*** 聊天系统 服务器端代码
*/
#include <iostream>
#include <WinSock2.h>
#include <stdio.h>
#pragma comment(lib,"ws2_32.lib")//导入dll库
using namespace std;
int main()
{
cout << "【服务器】" << endl;
//1 加载套接字库 初始化 socket前的检查,检查协议库的版本,避免别的版本的socket,并且通过
//WSAStartup用来启动对应版本的socket 第一个参数为版本号 第二个参数为详细数据
WSADATA wd; //记录详细的数据
WORD versionRequired = MAKEWORD(2, 2); //版本号
int err = WSAStartup(versionRequired, &wd);//通过返回的值判断是否加载成功
if (err != 0)
{
cout << "加载套接字子库失败,错误代码:" << GetLastError() << endl;
return 0;
}
else
{
// cout << "加载套接字成功。" << endl;
;
}
//2 判断请求的版本是否一致
if (LOBYTE(wd.wVersion) != 2 || HIBYTE(wd.wVersion) != 2)
{
cout << "请求的套接字版本不一致,错误代码:" << GetLastError() << endl;
return 0;
}
//3 创建TCP套接字 SOCK_STREAM 流程式套接字 面向连接
//TCP:传输控制协议 可靠传输 建立连接
//UDP:用户数据报协议 不可靠传输
//第一个参数:IP地址类型 AF_INET : Ipv4 AF_INET6: Ipv6
//第二个参数:数据