INADDR_ANY                  0.0.0.0任何地址
INADDR_LOOPBACK      127.0.0.1    

使用回环地址进行本地TCP/IP通信,防火墙不会进行拦截。

#include <winsock2.h>
#include <stdio.h>
#pragma comment(lib,"wsock32.lib")

void main()
{
    WORD wVersionRequested;
    WSADATA wsaData;
    int err;

    wVersionRequested = MAKEWORD(2, 2);

    err = WSAStartup(wVersionRequested, &wsaData);
    if (err != 0)
        return;

    if (LOBYTE(wsaData.wVersion) != 2 ||
        HIBYTE(wsaData.wVersion) != 2)
    {
        WSACleanup();
        return;
    }
    SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, 0);
    SOCKADDR_IN sockaddr;
    sockaddr.sin_addr.S_un.S_addr = htonl(INADDR_LOOPBACK);
    sockaddr.sin_family = AF_INET;
    sockaddr.sin_port = htons(8006);
    bind(sockSrv, (SOCKADDR*)&sockaddr, sizeof(SOCKADDR));
    listen(sockSrv, 5);
    SOCKADDR_IN addrClient;
    int len = sizeof(SOCKADDR);
    while(1)
    {
        SOCKET sockConn = accept(sockSrv, (SOCKADDR*)&addrClient, &len);
        char SendBuf[100];
        send(sockConn, SendBuf, sprintf(SendBuf,"server") + 1, 0);
        char recvBuf[100];
        recv(sockConn, recvBuf, 100, 0);
        printf("%s\n", recvBuf);
        closesocket(sockConn);
    }
}


#include <winsock2.h>
#include <stdio.h>
#pragma comment(lib,"wsock32.lib")

void main()
{
    WORD wVersionRequested;
    WSADATA wsaData;
    int err;

    wVersionRequested = MAKEWORD(2, 2);

    err = WSAStartup(wVersionRequested, &wsaData);
    if (err != 0)
        return;

    if (LOBYTE(wsaData.wVersion) != 2 ||
        HIBYTE(wsaData.wVersion) != 2)
    {
        WSACleanup();
        return;
    }
    SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0);
    SOCKADDR_IN sockaddr;
    sockaddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//INADDR_LOOPBACK;
    sockaddr.sin_family = AF_INET;
    sockaddr.sin_port = htons(8006);
    connect(sockClient, (SOCKADDR*)&sockaddr, sizeof(SOCKADDR));
    char recvBuf[100] = {0}, sendBuf[100] = {0};
    recv(sockClient, recvBuf, 100, 0);
    printf("%s\n", recvBuf);
    send(sockClient, sendBuf, sprintf(sendBuf, "client") + 1, 0);
    closesocket(sockClient);
    WSACleanup();
}
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐