云主机无法收到UDP信号的解决

// UDPSERVICE.cpp
#include <Windows.h>
#include "stdafx.h"
#include "WinSock.h"

#define SOCK_VER 0x05
#define udp_port 6001

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

int UDPSERVICE(){
    SOCKET g_sock;
    //初始化环境
    WSADATA wd = {0};
    int nStart = WSAStartup(MAKEWORD(SOCK_VER,0),&wd);//函数成功返回0,失败返回错误代码
    //错误处理
    if (0 != nStart){
        return 0;
    }
 
    if (2 != LOBYTE(wd.wVersion))
    {
        return 0;
    }
 
    //创建socket套接字
    g_sock = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
    if (INVALID_SOCKET == g_sock){
        //sprinf(_T("无效的socket"));
        return 0;
    }
 
    //LogEvent(_T("socket 创建成功!"));
 
    //绑定
    sockaddr_in addr = {0};
    addr.sin_family = AF_INET;
    addr.sin_port = htons(udp_port);
    addr.sin_addr.s_addr = inet_addr("172.1.0.8"); 

//云主机采用的公网IP配置是映射的,无法直接绑定,这里用ipconfig/all看到的是172.x.x.x的IP。如果只绑定127.0.0.1无法接收到。绑定172的IP就可以了。   
 
    int nBind;
    nBind = bind(g_sock,(sockaddr *)&addr,sizeof(addr));//成功返回0
    if (0 != nBind){
        printf("绑定IP失败");
        return 0;
    }
 
    //获得已经绑定的端口号
    int nLen = sizeof(addr);
    getsockname(g_sock,(sockaddr *)&addr,&nLen);
 
    printf("socket 成功绑定到端口:%d,等待数据。。。\n",ntohs(addr.sin_port));
 
    //等待并接收数据
    sockaddr_in saClient = {0};
    int nFromLen = sizeof(saClient);
    char szBuff[256] = {0};
    int nSent = 0;
    while(1){
        recvfrom(g_sock,szBuff,256,0,(sockaddr *)&saClient,&nFromLen);        
 
        if(nFromLen>0){
            printf("收到的信息:%s,从%s,%d \n",szBuff,inet_ntoa(saClient.sin_addr),ntohs(saClient.sin_port));
            
            //向客户端发送回应
            strcpy_s(szBuff,"OK!");
            nSent = sendto(g_sock,szBuff,strlen(szBuff)+1,0,(sockaddr *)&saClient,sizeof(saClient));
        }

        Sleep(10);
        if (0 == nSent){
            printf("WSAGetLastError:%d",WSAGetLastError());
        }else{
            printf("成功发出回应!!\n"); 
        }
    }
 
    //关闭资源
    closesocket(g_sock);//关闭套接字
 
    WSACleanup();//清理环境

    return 1;
}

推荐查看我的软件作品:

1. PB反编译大师

2. PB混淆加密大师

3. 互联网数据组件:DataWindowHTTP

4. ESC/POS打印组件:ESC/POS ImagePrint

5. SQLConnectManager:数据库连接断线管理(年后即将测试)

PB反编译, PB反编译大师, PB加密, PB混淆加密大师,DatawindowHTTP,PB DeCompiler,PB Obfuscatoricon-default.png?t=M0H8http://powerbuilder.ltd/indexcn.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值