windows socket 簡單的服務端和客戶端代碼

客戶端代碼服務器

//socket簡單的客戶端代碼
#define WIN32_LEAN_AND_MEAN
#define _CRT_SECURE_NO_WARNINGS
#define _WINSOCK_DEPRECATED_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <Windows.h>

#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib")

int main(int argc, char *argv[]) {

    WSADATA wd;
    WSAStartup(MAKEWORD(2, 2), &wd);

    //建立客戶端套接字
    SOCKET sktCli = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

    sockaddr_in addrSer = {0};
    addrSer.sin_family = AF_INET;//要接的服務器的IPV4協議
    addrSer.sin_port = htons(8080);//要鏈接的服務器的端口
    addrSer.sin_addr.s_addr = inet_addr("127.0.0.1");//要鏈接的服務器的IP
    //鏈接服務器
    connect(sktCli, (sockaddr *)&addrSer, sizeof(addrSer));

    char buf[1024];
    while (true) {
        printf(">>");
        scanf("%s", buf);
        send(sktCli, buf, strlen(buf) + 1, 0);//向服務器發送數據

        recv(sktCli, buf, sizeof(buf), 0);//接受服務器發送的數據
        printf("[server] %s\n", buf);
    }

    WSACleanup();
    return 0;
}

服務端代碼socket

//socket簡單的服務器代碼
#define WIN32_LEAN_AND_MEAN
#define _CRT_SECURE_NO_WARNINGS
#define _WINSOCK_DEPRECATED_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <Windows.h>

#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib")

int main(int argc, char *argv[]) {

    WSADATA wd;
    WSAStartup(MAKEWORD(2, 2), &wd);

    //建立服務器套接字
    SOCKET sktSer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

    sockaddr_in addrSer = { 0 };
    addrSer.sin_family = AF_INET;//服務器的IPV4協議
    addrSer.sin_port = htons(8080);//服務器的端口
    addrSer.sin_addr.s_addr = inet_addr("127.0.0.1");//服務器的IP

    //將套接字和端口、ip綁定
    int i = bind(sktSer, (sockaddr *)&addrSer, sizeof(addrSer));

    //開始監聽套接字
    listen(sktSer, 5);

    //接受客戶端套接字
    SOCKET sktCli = accept(sktSer, NULL, NULL);
    char buf[1024];
    while (true) {
        recv(sktCli, buf, sizeof(buf), 0);//接受客戶端發送的數據
        printf("[client] %s\n", buf);

        send(sktCli, buf, strlen(buf) + 1, 0);//向客戶端發送數據
    }

    WSACleanup();
    return 0;
}
相關文章
相關標籤/搜索