win 平台 UDP 客户端与服务器本机数据交互

#include <stdio.h>
#include <winsock2.h>

#pragma comment(lib,"ws2_32.lib")

int main(void)
{
    //初始化wsa
    WORD sockVision = MAKEWORD(2, 2);
    WSADATA wsadata;
    //其他变量
    SOCKET serSocket;
    struct sockaddr_in remoteAddr;
    struct sockaddr_in sin;
    int ret = -1;
    int nAddrlen = sizeof(remoteAddr);
    char revdata[255];
    char senddata[255];

    if (WSAStartup(sockVision, &wsadata) != 0)
    {
        printf("WSA初始化失败\n");
        return 0;
    }

    //创建套接字
    serSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
    if (serSocket == INVALID_SOCKET)
    {
        printf("socket服务器创建失败\n");
        return 0;
    }

    //绑定IP和端口
    sin.sin_family = AF_INET;
    sin.sin_port = htons(8888);
    sin.sin_addr.S_un.S_addr = INADDR_ANY;
    if (bind(serSocket, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)
    {
        printf("绑定IP和端口\n");
        return 0;
    }

    //循环接收数据
    while (1)
    {
        ret = recvfrom(serSocket, revdata, 255, 0, (SOCKADDR*)&remoteAddr, &nAddrlen);
        if (ret > 0)
        {
            revdata[ret] = 0x00;
            printf("接收到一个连接:%s \n", inet_ntoa(remoteAddr.sin_addr));
            printf("\n");
            printf("客户:");
            printf(revdata);
            printf("\n");
        }

        if (strcmp(revdata, "bye") == 0)
            break;

        //发送数据
        printf("我:");
    //    scanf("%s", senddata);
        sendto(serSocket, senddata, strlen(senddata), 0, (SOCKADDR*)&remoteAddr, nAddrlen);
    }

    closesocket(serSocket);
    WSACleanup();
    return 0;
} 
#include <stdio.h>
#include <winsock2.h>

#pragma comment(lib,"ws2_32.lib")


int main(void)
{
    WORD sockVision = MAKEWORD(2, 2);
    WSADATA wsadata;
    SOCKET sclient;
    struct sockaddr_in clientAddr;
    char senddata[255];
    char revdata[255];
    int ret = -1;
    int len = -1;
    if (WSAStartup(sockVision, &wsadata) != 0)
    {
        printf("WSA初始化失败\n");
        return 0;
    }

    sclient = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
    if (sclient == INVALID_SOCKET)
    {
        printf("socket客户端创建失败\n");
        return 0;
    }

    clientAddr.sin_family = AF_INET;
    clientAddr.sin_port = htons(8888);
    clientAddr.sin_addr.S_un.S_addr = INADDR_ANY;// inet_addr("192.168.1.105");
    len = sizeof(clientAddr);

    while (1)
    {
        printf("我:");
        scanf("%s", senddata);
        sendto(sclient, senddata, strlen(senddata), 0, (SOCKADDR*)&clientAddr, len);
        if (strcmp(senddata, "bye") == 0)
            break;
        //ret = recvfrom(sclient, revdata, 255, 0, (SOCKADDR*)&clientAddr, &len);
        if (ret > 0)
        {
            revdata[ret] = 0x00;
            printf("\n");
            printf("服务器:");
            printf(revdata);
            printf("\n");
        }
    }

    closesocket(sclient);
    WSACleanup();

    system("pause");
    return 0;


} 

 

posted @ 2022-11-24 01:44  三字经  阅读(36)  评论(0编辑  收藏  举报