提到网络编程我们首先想到的是socket,俗称套接字,他将端口和ip进行连接, 然后是winsock,是windows提供的一款网络编程接口。分为1和2两个版本,版本1只提供tcp和udp协议。
tcp和udp是网络通讯基本协议,tcp协议需要三次招手,要求稳定的连接,如同和服务器要有夫妻的名分,udp直接发送到服务器,一夜情
关于c++的网络编程,微软提供了进行操作的程序接口
先说服务器端
- socket()
- bind()
- listen()
- accept()
- recv()/send()
- close()
这就是大致流程,先创建套接字,连接ip和端口,开放访问,再是等待客户端的访问,然后接受访问,保存消息,发送反馈
//winsock是windows提供的一款网络编程接口。分为1和2两个版本,版本1只提供tcp和udp协议
//tcp协议需要稳定链接到服务器,所以说要三次招手
//udp直接打包到网络上发送,不需要链接
#include<WinSock2.h>
//windows.h需要在winsock下面包含
#include<Windows.h>
//网络分为cs和bs'两种模式,cs是客户端和服务器交互,bs是游览器和服务器交互
#include<iostream>
#pragma comment(lib,"ws2_32.lib")
#include<WS2tcpip.h>
int main()
{
//1.初始化网络环境
//第一个参数 sock版本号
//WSAStartup(0X0202);
WSADATA date{ 0 };
WSAStartup(MAKEWORD(2,2),&date);
//2 创建SOCKET
//参数1 地址系列
//参数二 套接类型
//参数三 传输协议
SOCKET server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
//3 绑定端口号和IP地址,让客户端可以链接
//使用sockaddr_in结构体保存端口和ip
sockaddr_in serverAddr{ 0 };
serverAddr.sin_family = AF_INET;
//绑定端口 需要用htons转换
serverAddr.sin_port = htons(8888);
//绑定ip地址
inet_pton(AF_INET, "10.212.37.134", &serverAddr.sin_addr);
//全部链接到服务器
//参数1 socket对象 参数2 sockaddr_in结构体地址转SOCKADDR 参数3 结构体大小
bind(server, (SOCKADD