TCP/IP编程调用Windows的库实现UDP网络通信(代码实例)

简介: UDP协议的实现:UDP协议是基于IP的。(本文采用Qt进行开发实现,且结合了C/C++混合编程的知识)

UDP协议的实现:

UDP协议是基于IP的。(本文采用Qt进行开发实现,且结合了C/C++混合编程的知识)

1、新建一个源文件udp.c与头文件udp.h,并且在Qt项目文件中 添加Windows库“winsock2.h”如下:20180912215348975.png

2、在头文件创建UDP发送端和接收端函数:


#ifndef UDP_H
#define UDP_H
extern "C"
{
int Socket_send(char *ip);//udp发送
int Socket_recv();//接收端
}
#endif // UDP_H


3、接下来就是具体的代码实现了:

#include <stdio.h>
#include <winsock2.h>
int Socket_send(char *ip)
{
    size_t vc = 0;
    //初始化socket
    char buf[1024] = {0};//传输使用的字符串
    DWORD ver;
    WSADATA wsaData;
    ver = MAKEWORD(1,1);//调用wsastartup时告诉Windows使用的sock版本
    WSAStartup(ver, &wsaData);
    //创建socket结构体
    SOCKET st = socket(AF_INET, SOCK_DGRAM, 0);//建立一个socket
    //创建结构体
    struct sockaddr_in addr;
    memset(&addr, 0, sizeof(addr));//初始化结构体
    addr.sin_family = AF_INET;//代表使用的是TCP/IP的地址
    addr.sin_port = htons(8080);//设置使用的端口号
    addr.sin_addr.s_addr = inet_addr(ip);//自检查网口IP
    while(1)
    {
        memset(buf, 0, sizeof(buf));
        gets(buf);
        if(buf[0] == '0')
        {//循环退出条件
            break;
        }
        vc = sendto(st, buf, strlen(buf), 0, (struct sockaddr *)&addr, sizeof(addr));//发送函数
    }
    closesocket(st);//使用完socket要将其关闭
    WSACleanup();//释放win下socket内部的相关资源
    return vc;
}
int Socket_recv()
{
    //初始化socket
    char buf[1024] = {0};//传输使用的字符串
    size_t rc = 0;
    DWORD ver;
    WSADATA wsaData;
    ver = MAKEWORD(1,1);//调用wsastartup时告诉Windows使用的sock版本
    WSAStartup(ver, &wsaData);
    //创建socket结构体
    SOCKET st = socket(AF_INET, SOCK_DGRAM, 0);//建立一个socket
    //创建结构体
    struct sockaddr_in recvaddr;
    memset(&recvaddr, 0, sizeof(recvaddr));//初始化结构体
    recvaddr.sin_family = AF_INET;//代表使用的是TCP/IP的地址
    recvaddr.sin_port = htons(8080);//设置使用的端口号
    recvaddr.sin_addr.s_addr = htonl(INADDR_ANY);//接收端采用任意的IP地址
    if(bind(st, (struct sockaddr *)&recvaddr, sizeof(recvaddr)) > -1)
    {
        struct sockaddr_in sendaddr;
        memset(&sendaddr, 0, sizeof(sendaddr));
        int len = sizeof(sendaddr);
        while(1)
        {
            memset(buf, 0, sizeof(buf));
            rc = recvfrom(st, buf, sizeof(buf), 0, (struct sockaddr *)&sendaddr, &len);
            //rc = recv(st, buf, sizeof(buf), 0);
            printf("recvive = %s\n", buf);
        }
       // printf("IP = %u\n", sendaddr.sin_addr.s_addr);
    }
    closesocket(st);//使用完socket要将其关闭
    WSACleanup();//释放win下socket内部的相关资源
    return rc;
}


最后先运行接收,然后尝试使用发送端发送字符,成功了!(记住一定要关闭防火墙以及设置好系统环境变量,否则会出现程序无法启动(环境变量没有设置好,找不到libwin_32dll的库)以及接收端被防火墙屏蔽无法接收数据)

20180912215723360.png


相关文章
|
27天前
|
安全 Windows
【Azure Cloud Service】在Windows系统中抓取网络包 ( 不需要另外安全抓包工具)
通常,在生产环境中,为了保证系统环境的安全和纯粹,是不建议安装其它软件或排查工具(如果可以安装,也是需要走审批流程)。 本文将介绍一种,不用安装Wireshark / tcpdump 等工具,使用Windows系统自带的 netsh trace 命令来获取网络包的步骤
67 32
|
22天前
|
网络协议
网络通信的基石:TCP/IP协议栈的层次结构解析
在现代网络通信中,TCP/IP协议栈是构建互联网的基础。它定义了数据如何在网络中传输,以及如何确保数据的完整性和可靠性。本文将深入探讨TCP/IP协议栈的层次结构,揭示每一层的功能和重要性。
53 5
|
22天前
|
监控 网络协议 网络性能优化
网络通信的核心选择:TCP与UDP协议深度解析
在网络通信领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种基础且截然不同的传输层协议。它们各自的特点和适用场景对于网络工程师和开发者来说至关重要。本文将深入探讨TCP和UDP的核心区别,并分析它们在实际应用中的选择依据。
51 3
|
1月前
|
网络协议 SEO
TCP连接管理与UDP协议IP协议与ethernet协议
TCP、UDP、IP和Ethernet协议是网络通信的基石,各自负责不同的功能和层次。TCP通过三次握手和四次挥手实现可靠的连接管理,适用于需要数据完整性的场景;UDP提供不可靠的传输服务,适用于低延迟要求的实时通信;IP协议负责数据包的寻址和路由,是网络层的重要协议;Ethernet协议定义了局域网的数据帧传输方式,广泛应用于局域网设备之间的通信。理解这些协议的工作原理和应用场景,有助于设计和维护高效可靠的网络系统。
39 4
|
3月前
|
监控 网络协议 网络性能优化
如何办理支持UDP协议的网络
在当今网络环境中,UDP(用户数据报协议)因传输速度快、延迟低而广泛应用于在线游戏、视频流媒体、VoIP等实时服务。本文详细介绍了办理支持UDP协议网络的方法,包括了解UDP应用场景、选择合适的ISP及网络套餐、购买支持UDP的设备并进行优化设置,以及解决常见问题的策略,帮助用户确保网络稳定性和速度满足实际需求。
|
3月前
|
安全 Windows
怎样利用 Windows XP实现网络统一关机
怎样利用 Windows XP实现网络统一关机
怎样利用 Windows XP实现网络统一关机
|
3月前
|
网络协议
UDP协议在网络通信中的独特应用与优势
UDP(用户数据报协议)作为关键的传输层协议,在网络通信中展现出独特优势。本文探讨UDP的无连接性及低开销特性,使其在实时性要求高的场景如视频流、在线游戏中表现优异;其不保证可靠交付的特性赋予应用程序自定义传输策略的灵活性;面向报文的高效处理能力及短小的包头设计进一步提升了数据传输效率。总之,UDP适用于高速、实时性强且对可靠性要求不高的应用场景,为网络通信提供了多样化的选择。
|
4月前
|
Web App开发 SQL 存储
警惕可能对Windows网络带来风险的工具
警惕可能对Windows网络带来风险的工具
警惕可能对Windows网络带来风险的工具
|
4月前
|
网络协议 Windows
在电脑上测试TCP/UDP端口是否开放,还是得网络大佬这招厉害!
在电脑上测试TCP/UDP端口是否开放,还是得网络大佬这招厉害!
823 2
|
3月前
|
网络协议
网络协议概览:HTTP、UDP、TCP与IP
理解这些基本的网络协议对于任何网络专业人员都是至关重要的,它们不仅是网络通信的基础,也是构建更复杂网络服务和应用的基石。网络技术的不断发展可能会带来新的协议和标准,但这些基本协议的核心概念和原理将继续是理解和创新网络技术的关键。
215 0