导航菜单

网络编程

学习C++网络编程的基础知识和实践应用

85%
Socket编程基础

Socket API基础

使用Socket API进行网络通信的基础知识。

#include <iostream>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
using namespace std;

// 基本的Socket服务器
int createServer(int port) {
    int serverSocket = socket(AF_INET, SOCK_STREAM, 0);
    if (serverSocket == -1) {
        cerr << "创建socket失败" << endl;
        return -1;
    }
    
    sockaddr_in serverAddr;
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(port);
    serverAddr.sin_addr.s_addr = INADDR_ANY;
    
    if (bind(serverSocket, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) < 0) {
        cerr << "绑定失败" << endl;
        return -1;
    }
    
    if (listen(serverSocket, 5) < 0) {
        cerr << "监听失败" << endl;
        return -1;
    }
    
    cout << "服务器启动,监听端口 " << port << endl;
    return serverSocket;
}

// 基本的Socket客户端
int createClient(const char* serverIP, int port) {
    int clientSocket = socket(AF_INET, SOCK_STREAM, 0);
    if (clientSocket == -1) {
        cerr << "创建socket失败" << endl;
        return -1;
    }
    
    sockaddr_in serverAddr;
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(port);
    inet_pton(AF_INET, serverIP, &serverAddr.sin_addr);
    
    if (connect(clientSocket, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) < 0) {
        cerr << "连接失败" << endl;
        return -1;
    }
    
    cout << "已连接到服务器" << endl;
    return clientSocket;
}