socket udp

1、服务端

#include <WinSock2.h>
#include<Windows.h>

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


int main()
{
    WSADATA wsaData;
    if (WSAStartup(MAKEWORD(2, 2), &wsaData))
        return -1;
    if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion != 2))
        return -1;
    printf("Server access ... \r\n");

    SOCKET socket_Server = socket(AF_INET, SOCK_DGRAM, 0);

    sockaddr_in sockaddr_in_Server;
    sockaddr_in_Server.sin_family = AF_INET;
    sockaddr_in_Server.sin_port = htons(1234);
    sockaddr_in_Server.sin_addr.S_un.S_un_b.s_b1 = 127;
    sockaddr_in_Server.sin_addr.S_un.S_un_b.s_b2 = 0;
    sockaddr_in_Server.sin_addr.S_un.S_un_b.s_b3 = 0;
    sockaddr_in_Server.sin_addr.S_un.S_un_b.s_b4 = 1;


    if (bind(socket_Server, (sockaddr *)&sockaddr_in_Server, sizeof(sockaddr_in_Server)) == SOCKET_ERROR)
        return -1;

    char recvBuf[MAXBYTE] = {0};
    char sendBuf[MAXBYTE] = {0};

    int sockaddr_in_Len = sizeof(sockaddr_in);

    while (true)
    {
        if (recvfrom(socket_Server, recvBuf, MAXBYTE, 0, (sockaddr *)&sockaddr_in_Server, &sockaddr_in_Len) == SOCKET_ERROR)
            break;
        printf("Recv : %s\r\n", recvBuf);

        scanf_s("%s", sendBuf, MAXBYTE);
        if (sendto(socket_Server, sendBuf, strlen(sendBuf) + sizeof(char), 0, (sockaddr *)&sockaddr_in_Server, sockaddr_in_Len) == SOCKET_ERROR)
            break;

    }

    closesocket(socket_Server);
    WSACleanup();
    return 0;
}

2、客户端

#include <WinSock2.h>
#include<Windows.h>

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

int main()
{
    WSADATA wsaData;
    if (WSAStartup(MAKEWORD(2, 2), &wsaData))
        return -1;
    if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion != 2))
        return -1;
    printf("Client access ... \r\n");

    SOCKET socket_Server = socket(AF_INET, SOCK_DGRAM, 0);

    sockaddr_in sockaddr_in_Client;
    sockaddr_in_Client.sin_family = AF_INET;
    sockaddr_in_Client.sin_port = htons(1234);
    sockaddr_in_Client.sin_addr.S_un.S_un_b.s_b1 = 127;
    sockaddr_in_Client.sin_addr.S_un.S_un_b.s_b2 = 0;
    sockaddr_in_Client.sin_addr.S_un.S_un_b.s_b3 = 0;
    sockaddr_in_Client.sin_addr.S_un.S_un_b.s_b4 = 1;

    char recvBuf[MAXBYTE] = {0};
    char sendBuf[MAXBYTE] = {0};

    int sockaddr_in_Len = sizeof(sockaddr_in);

    while (true)
    {
        scanf_s("%s", sendBuf, MAXBYTE);
        if (sendto(socket_Server, sendBuf, strlen(sendBuf) + sizeof(char), 0, (sockaddr *)&sockaddr_in_Client, sockaddr_in_Len) == SOCKET_ERROR)
            break;

        if (recvfrom(socket_Server, recvBuf, MAXBYTE, 0, (sockaddr *)&sockaddr_in_Client, &sockaddr_in_Len) == SOCKET_ERROR)
            break;

    }
    closesocket(socket_Server);
    WSACleanup();
    return 0;
}

 

posted @ 2017-10-26 19:23  _xiaohaige  阅读(121)  评论(0)    收藏  举报