本篇将讲解c++的socket实现
IDE
推荐大家使用 Microsoft Visual Studio,可以省去很多繁琐的设定
1.新建项目
server端
新建项目 server,并添加源文件 server.cpp
client端
新建项目 client,并添加源文件 client.cpp
2.加载socket库
server端 && client端
#include <iostream>
#include <thread> //多线程
#include <winsock.h> //socket头文件
#pragma comment (lib,"ws2_32.lib") //加载socket
using namespace std;
int main()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
/*具体实现代码*/
WSACleanup();
return 0;
}
3.创建套接字(socket)
调用socket函数创建套接字
server端
SOCKET server;
SOCKET client;
server = socket(AF_INET, SOCK_STREAM, 0);
client端
SOCKET client;
client = socket(AF_INET, SOCK_STREAM, 0);
4.绑定端口与连接
server端
在server端调用函数bind绑定端口,listen设定同时最大连接数,accept接受client端的连接
int len;
SOCKADDR_IN server_addr;//使用结构体 SOCKADDR_IN 存储配置
SOCKADDR_IN client_addr;
memset(&server_addr, 0, sizeof(server_addr)); //清零
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); //server端ip地址
server_addr.sin_port = htons(1234); //监听端口
bind(server, (SOCKADDR*)&server_addr, sizeof(SOCKADDR));
listen(server, 10);
cout << "等待连接......" << endl;
len = sizeof(SOCKADDR);
client = accept(server, (SOCKADDR*)&client_addr, &len);
cout << "连接成功" << endl;
client端
在client端调用函数connect连接server端
SOCKADDR_IN client_addr;//使用结构体 SOCKADDR_IN 存储配置
memset