1. 配置QT的环境变量,这台电脑à属性à高级系统设置à高级à环境变量à系统变量àpathàC:\Qt\Qt5.3.0\5.3\mingw482_32\bin;C:\Qt\Qt5.3.0\Tools\QtCreator\bin

  2. 创建一个QT项目:winAndLinuxMyUdpProject项目

  3. 改动QT的项目文件,改动winAndLinuxMyUdpProject.pro文件:

注意,这的的:LIBS+=
-lWs2_32  ##标示使用window下的Ws2_32.lib。-l表示要链接后面的库

4.编写头文件:udp.h

#ifndefUDP_H

#defineUDP_H

//明白的告诉C++编译器。这是一个用C语言编译的函数。你就不要把函数名

//转化为C++格式了

//由于C++的编译器位了方法的重载,会改动方法的名称,假设终于的文件时

//C++为后缀的,那么就不须要加上以下一句了

extern"C" //这里是C++的keyword

{

intsocket_send(constchar*IP);

intsocket_recv();

}

#endif//UDP_H

5.编写头文件的实现函数

#include<winsock2.h> //这里是windows下使用socket须要的文件

#include<stdio.h>

#include<string.h>

/*接收ip地址*/

intsocket_send(constchar*IP)

{

//初始化socket

DWORDver;

WSADATAwsaData;

//在调用WSAStatrtup要告诉windows,我用什么版本号的socket

ver=MAKEWORD(1,1);

//windows要求,仅仅要用socket,第一步必须调用这个函数

WSAStartup(ver,&wsaData);

//初始化socket完毕

//建立一个socket,第一个參数是指定socket要用那个协议,AF_INET

//代表要用TCP/IP协议

//第三个參数SOCK_DGRAM意思是要用UDP协议

//第三个參数一般默认值填0

SOCKETst=socket(AF_INET,SOCK_DGRAM,0);//定义一个socket

structsockaddr_inaddr;

memset(&addr,0,sizeof(addr));//初始化结构addr;

addr.sin_family=AF_INET;//代表要使用一个TCP/IP的地址

addr.sin_port=htons(8080);//hosttonetshort

addr.sin_addr.s_addr=inet_addr(IP);

charbuf[1024]={0};

size_trc=0;

while(1)

{

memset(buf,0,sizeof(buf));

gets(buf);

if(buf[0]=='0')//做为还原的退出条件

break;

//发送udp数据

rc=sendto(st,buf,strlen(buf),0,(structsockaddr

*)&addr,sizeof(addr));

}

closesocket(st);//使用完socket要将其关闭

WSACleanup();//释放winsocket内部的相关资源

returnrc;

}

intsocket_recv()

{

//初始化socket

DWORDver;

WSADATAwsaData;

//在调用WSAStatrtup要告诉widnows。我用什么版本号的socket

ver=MAKEWORD(1,1);

//Windows要求,仅仅要用Socket,第一步必须调用这个函数

WSAStartup(ver,&wsaData);

//初始化socket完毕

//建立一个socket,第一个參数是指定socket要用那个协议,AF_INET代表要用TCP/IP协议

//第二个參数SOCK_DGRAM意思是要用UDP协议

//第三个參数一般默认填0

SOCKETst=socket(AF_INET,SOCK_DGRAM,0); //定义一个socket

structsockaddr_inaddr;

memset(&addr,0,sizeof(addr)); //初始化结构addr

addr.sin_family=AF_INET;//代表要使用一个TCP/IP的地址

addr.sin_port=htons(8080);//hosttonetshort

addr.sin_addr.s_addr=htonl(INADDR_ANY);//做为接收方,不须要指定详细的IP地址。接收的主机是什么IP,我就在什么IP上收数据

intrc=0;

//将port号和程序绑定

if(bind(st,(structsockaddr*)&addr,sizeof(addr))>-1)

{

charbuf[1024]={0};

structsockaddr_insendaddr;

memset(&sendaddr,0,sizeof(sendaddr));

intlen=sizeof(sendaddr);

while(1)

{

memset(buf,0,sizeof(buf));

//接收udp数据

rc=recvfrom(st,buf,sizeof(buf),0,

(structsockaddr*)&sendaddr,&len);

printf("%s\n",buf);

}

}

closesocket(st);//使用完socket要将其关闭

WSACleanup();  //释放win_socket内部的相关资源

returnrc;

}

 
6.编写main.c
#include <iostream>
#include "udp.h"
 
using namespace std;
 
int main(int argc, char *args[])
{
    //这一句说明当參数的个数大于1的时候发送消息
    if (argc > 1) 
    {
        socket_send(args[1]);  //
    }
    else
{
    //表示接收消息
        socket_recv();
    }
 
    return 0;
}
 
7.执行项目,项目截图例如以下:
A:先打开cmd窗体用于接收,进入项目winAndLinuxMyUdpProject.exe所在位置:
G:\QT\build-winAndLinuxMyUdpProject-Desktop_Qt_5_3_0_MinGW_32bit-Debug\debug\  
  B:打开cmd窗体用于发送:
以下是接收窗体:
以下是发送窗体:
 
8.额外加入:
A:gcc编译过程:


watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">
B:对于C语言来讲。编译完毕之后函数的名称不会改变。对于C++来讲。函数的名称发生改变。假设C代码中的函数。在C++中使用一定要用extern “C”keyword来说明。
    C:在unix下so文件一定要以lib开头,以so结尾
 

Window下UDP(socket)接和收数据案例的更多相关文章

  1. window下Mysql 恢复Delete删除的数据

    转载:https://www.cnblogs.com/q149072205/p/11940591.html 本机用的Navicat连mysql测试DB又连了正式DB,因为本地与正式要频繁操作所以都打开 ...

  2. Linux编程之UDP SOCKET全攻略

    这篇文章将对linux下udp socket编程重要知识点进行总结,无论是开发人员应知应会的,还是说udp socket的一些偏僻知识点,本文都会讲到.尽可能做到,读了一篇文章之后,大家对udp so ...

  3. 【转】Linux编程之UDP SOCKET全攻略

    转自:http://www.cnblogs.com/skyfsm/p/6287787.html?utm_source=itdadao&utm_medium=referral 这篇文章将对lin ...

  4. UDP(socket)数据访问和封装情况C++代码

     配置QT下的pro文件 TEMPLATE = app CONFIG += console CONFIG -= app_bundle CONFIG -= qt   LIBS += -lWs2_32 ...

  5. Day28--Python--网络通信协议 tcp与udp下的socket

    昨日内容回顾: 1. CS架构 服务端客户端架构 软件CS架构: 京东,淘宝,QQ,微信,暴风影音,快播 硬件CS架构: 打印机 服务端: 提供服务的 客户端: 享受服务的 BS架构: 浏览器和服务端 ...

  6. day 27 网络通信协议 tup udp 下的socket

    1.osi七层模型 通信流程 socket(抽象层): 结合上图来看,socket在哪一层呢,我们继续看下图 socket在内的五层通讯流程: 2.TCP/UDP的区别: TCP是以数据流的形式传输, ...

  7. c++ 网络编程(一)TCP/UDP windows/linux 下入门级socket通信 客户端与服务端交互代码

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9601511.html c++ 网络编程(一)TCP/UDP  入门级客户端与服务端交互代码 网 ...

  8. 项目总结22:Java UDP Socket数据的发送和接收

    项目总结22:Java UDP Socket数据的发送和接收 1-先上demo 客户端(发送数据) package com.hs.pretest.udp; import java.io.IOExcep ...

  9. window下安装redis报错: creating server tcp listening socket 127.0.0.1:6379: bind No error

    window下安装redis报错: creating server tcp listening socket 127.0.0.1:6379: bind No error 解决: 如果没有配置环境,在安 ...

随机推荐

  1. $tsinsenA1067$

    \(problem\) 这种题目需要一个定理 \(a[1]+a[2]+a[3]+a[4]...=(a[1]%mod)+...\) 本人出奇的懒 然后 动态规划?(恰似枚举) #include < ...

  2. Map,Filter 和 Reduce

    Map会将一个函数映射到一个输入列表的所有元素上 map(function_to_apply, list_of_inputs) items = [1, 2, 3, 4, 5] squared = li ...

  3. day02_12/12/2016_bean的实例化之定义多个配置方式

  4. Android常用的Dialog对话框用法

    Android的版本有很多通常开发的时候对话框大多数使用自定义或是 Google提供的V4, V7 兼容包来开发保持各个版本的对话框样式统一,所以这里使用的是V7 包里的AlertDialog. im ...

  5. Android项目实战_手机安全卫士程序锁

    ###1.两个页面切换的实现1. 可以使用Fragment,调用FragmentTransaction的hide和show方法2. 可以使用两个布局,设置visibility的VISIABLE和INV ...

  6. 【转】升级还是权谋?从USB PD 2.0到3.0

    原文出处 http://www.eetop.cn/blog/html/43/n-433743.html 如同iPhone的出现,才让智能机真正主导手机市场一样,Type-C口发布后,USB PD才正式 ...

  7. BFS小结

    其实bfs本身不难,甚至不需要去学习,只要知道它的特性就可以写出来了.往往,bfs都是用递归做的.递归比循环更容易timeout.所以这次遇到一题bfs,卡时间的就悲剧了. PAT1076 #incl ...

  8. hibernate映射数据库时@ManyToOne和@OneToMany

    第一次用hibernate自动生成表,涉及到多个表的外键,用到了@OneToMany和@ManyToOne注解碰到了几个错误. 首先声明一个基础,@OneToMany和@ManyToOne两个注解没有 ...

  9. 8、scala面向对象编程之对象

    1.  Object 2.伴生对象 3.让object继承抽象类 4.apply方法 5.main方法 6.用object实现枚举功能 1.  Object Object,相当于class的单个实例, ...

  10. 图论 Make Unique:有向图和无向图的一些算法

    计算机科学入门资料之一的<算法与数据结构-C语言版>,覆盖了基础算法的几乎所有分支,其中的一个典型分支为图理论. 一个简介:图论基础-图数据结构基础 一个简洁的博客:图论基础,简列一本书 ...