首页 > 其他分享 >win 平台 UDP 客户端与服务器本机数据交互

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

时间:2022-11-24 01:55:29浏览次数:51  
标签:UDP return revdata win senddata ret printf sin 客户端

#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;


} 

 

标签:UDP,return,revdata,win,senddata,ret,printf,sin,客户端
From: https://www.cnblogs.com/xwtstudio/p/16920669.html

相关文章

  • Win10 修改系统自带字体
    文章来源:Win10怎样更改系统字体?Win10默认字体修改教程-系统之家(xitongzhijia.net)苹方字体下载,window系统专用【2021最新版】免费下载-知乎(zhihu.com) 修改后......
  • windows--cmake与c++的使用教程(14)
    1概述本文基于前文环境本节目标:target_include_directories用法2作用target_include_directories的作用,用于给固定目标指定头文件搜索路径。moderncmake之......
  • 2022-11-23 Acwing每日一题
    本系列所有题目均为Acwing课的内容,发表博客既是为了学习总结,加深自己的印象,同时也是为了以后回过头来看时,不会感叹虚度光阴罢了,因此如果出现错误,欢迎大家能够指出错误,我......
  • windows11专业版控制面板如何打开的方法
    有深度技术的用户,在使用win11系统的时候,发现找不到控制面板了。其实,控制面板是windows系统中非常重要的部分,允许用户查看并更改基本的系统设置,比如添加/删除软件,除了通过桌......
  • Windows系统DOS命令详解
    一、DOS的历史DOS(DiskOperatingSystem),磁盘操作系统1980年,西雅图程序员蒂姆-帕特森,86-DOS1981年由微软公司购买并改进,更名为MS-DOS微软为IBM开发的PC-DOS,19......
  • redis启动客户端
    启动Redis启动方式:①前台启动redis-server②后台启动redis-server&最好使用后台启动,不占用命令终端.③根据配置文件启动启动命令配置文件&启动redis服务时,指......
  • 添加扩展 Windows 的资源管理器中预览 SVG
    在Windows的资源管理器中预览SVG图标的扩展打开链接https://github.com/maphew/svg-explorer-extension/releases,下载一个适合你电脑的版本。清空缓存打开cmd窗......
  • BOM_window定时器方法和案例2_轮播图
    BOM_window定时器方法:与定时器有关的方式:setTimeout():在指定的毫秒数后调用函数或计算表达式。参数:1.js代码或者方法对象2.毫秒值返回值:唯一标识,用于取消定时器clearT......
  • BOM_window属性和BOM_Location
    BOM_window属性:1.属性:1.获取其他BOM对象:historylocationNavigatorscreen:2.获取DOM对象document代码实现:<!DOCTYPEhtml><html><head><metacharset="UTF-8"......
  • FTP客户端和服务器工具
    Filezilla,中文站点提供了中文安装包。大约是10多年前,还是在上学的时候,经常访问善用佳软这个站点。里面经常介绍一些好用的软件,但部分都是开源或者免费的,当然也有收费的,比......