socket通信-UDP协议源码

Posted C语言编程学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket通信-UDP协议源码相关的知识,希望对你有一定的参考价值。

//服务器源码

#define _WINSOCK_DEPRECATED_NO_WARNINGS

#define  _CRT_SECURE_NO_WARNINGS

#include <winsock2.h>

#pragma comment(lib,"ws2_32")

#include <stdio.h>

int main()

{

    //加载套接字

    WORD wVersionRequested;//WinSock库的版本号

    WSADATA wsaData;

    int err;

    wVersionRequested = MAKEWORD(1, 1);

    err = WSAStartup(wVersionRequested, &wsaData);

    //创建套接字

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

    SOCKADDR_IN addrSrv;

    addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

    addrSrv.sin_family = AF_INET;

    addrSrv.sin_port = htons(6000);

    //绑定套接字

    bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));

    char recvBuf[1000];//接收数据

    char sendBuf[1000];//发送数据

    char tempBuf[1000];//交换区数据

    SOCKADDR_IN addrClient;

    int len = sizeof(SOCKADDR);

    while (1)

    {

        //等待并接收数据

        recvfrom(sockSrv, recvBuf, 1000, 0, (SOCKADDR*)&addrClient, &len);

        if ('q' == recvBuf[0])

        {

            sendto(sockSrv, "q", strlen("q") + 1, 0, (SOCKADDR*)&addrClient, len);

            printf("结束!");

            break;

        }

        sprintf(tempBuf, "%s 说:%s", inet_ntoa(addrClient.sin_addr), recvBuf);

        printf("%s ", tempBuf);

        //发送数据

        printf("请输入数据: ");

        scanf("%s",sendBuf);

        sendto(sockSrv, sendBuf, strlen(sendBuf) + 1, 0, (SOCKADDR*)&addrClient, len);

    }

    //关闭套接字

    closesocket(sockSrv);

    return 0;

}

//客户端源码

#define _WINSOCK_DEPRECATED_NO_WARNINGS

#define  _CRT_SECURE_NO_WARNINGS

#include <winsock2.h>

#pragma comment(lib,"ws2_32")

#include <stdio.h>

int main()

{

    //加载套接字

    WORD wVersionRequested;//WinSock库的版本号

    WSADATA wsaData;

    int err;


    wVersionRequested = MAKEWORD(1, 1);

    err = WSAStartup(wVersionRequested, &wsaData);

    //创建套接字

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

    SOCKADDR_IN addrSrv;

    addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

    addrSrv.sin_family = AF_INET;

    addrSrv.sin_port = htons(6000);


    char recvBuf[1000];//接收数据

    char sendBuf[1000];//发送数据

    char tempBuf[1000];//交互数据

    int len = sizeof(SOCKADDR);


    while (1)

    {

        //发送数据

        printf("请输入数据: ");

        scanf("%s",sendBuf);

        sendto(sockClient, sendBuf, strlen(sendBuf) + 1, 0, (SOCKADDR*)&addrSrv, len);

        //等待并接收数据

        recvfrom(sockClient, recvBuf, 1000, 0, (SOCKADDR*)&addrSrv, &len);


        if ('q' == recvBuf[0])

        {

            sendto(sockClient, "q", strlen("q") + 1, 0, (SOCKADDR*)&addrSrv, len);

            printf("结束!");

            break;

        }

        sprintf(tempBuf, "%s 说:%s", inet_ntoa(addrSrv.sin_addr), recvBuf);

        printf("%s ", tempBuf);

    }

    //关闭套接字

    closesocket(sockClient);

    WSACleanup();

    return 0;

}

socket通信-UDP协议源码

socket通信-UDP协议源码

socket通信-UDP协议源码


socket通信-UDP协议源码

上面的学习大纲,相信大家都很想学会项目开发,也是找工作的根本。

投资学习是终身授益的,伴随你一生的技术,相信自己技术能改变你一生的命运。想参与VIP系统学习班大团队的同学切勿错过,咨询或办理入学手续可以联系小编。


以上是关于socket通信-UDP协议源码的主要内容,如果未能解决你的问题,请参考以下文章

基于TCP与UDP协议的socket通信

基于UDP协议的网络通信应用程序(UDP-Socket)

Socket 通信之 UDP 通信

初识Socket通信:基于TCP和UDP协议学习网络编程

TCP,UDP协议下的socket通信

通过socket来进行一个UDP通信