Client.cpp


#include <stdio.h>

#include <winsock2.h>

#pragma comment (lib,"ws2_32")



//注释的为UDP的代码,方便对比

//流程

//TCP:WSAStarup socket connect recv/send closesocket WSACleanup

int main(int argc,char* argv[])

{

     WSADATA wsaData;

     WSAStartup(MAKEWORD(2,2),&wsaData);



     //SOCKET s = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);

     SOCKET s = socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);

    

     sockaddr_in addr;

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

     addr.sin_family = PF_INET;

     addr.sin_port = htons(827);



     //connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));

     sendto(s,"hello world server UDP",strlen("hello world server UDP") + sizeof(char),

                    0,(SOCKADDR*)&addr,sizeof(SOCKADDR));



     sockaddr_in clientAddrUDP;

    char szBuffer[MAXBYTE] = {0};

     int len = sizeof(SOCKADDR);



     //recv(s,szBuffer,MAXBYTE,NULL);

     recvfrom(s,szBuffer,MAXBYTE,0,(SOCKADDR*)&clientAddrUDP,&len);



     printf("szBuffer = %s \r\n",szBuffer);



     closesocket(s);



     WSACleanup();



     return 0;

}

Server.cpp



//注释的为UDP的代码,方便对比

//TCP::WSAStartup socket bind listen accept send/recv closesocket WSACleanup

#include <winsock2.h>

#include <stdio.h>

#pragma comment (lib,"ws2_32")



int main(int argc , char* grgv[])

{

     WSADATA wsaData;

     WSAStartup(MAKEWORD(2,2),&wsaData);



     //SOCKET s = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);

     SOCKET s = socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);



     sockaddr_in addr;

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

     addr.sin_port = htons(827);

     addr.sin_family = PF_INET;



     bind(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));



     //listen(s,1);



     SOCKADDR clientAddr;

     int nSize = sizeof(SOCKADDR);

     //SOCKET clientSock;

     char buf[MAXBYTE] = {0};

     int len = sizeof(SOCKADDR);

     recvfrom(s,buf,MAXBYTE,0,(SOCKADDR*)&clientAddr,&len);

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



     //clientSock = accept(s,(SOCKADDR*)&clientAddr,&nSize);

     //send(clientSock,"hello client \r\n",strlen("hello client \r\n" + sizeof(char)),NULL);



     sendto(s,"hello world client UDP",strlen("hello world client UDP") + sizeof(char),

          0,(SOCKADDR*)&clientAddr,sizeof(SOCKADDR));

    

     //closesocket(clientSock);

     closesocket(s);



     WSACleanup();

     return 0;

}

UDP HelloWord的更多相关文章

  1. python笔记8 socket(TCP) subprocess模块 粘包现象 struct模块 基于UDP的套接字协议

    socket 基于tcp协议socket 服务端 import socket phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 买 ...

  2. Node.js:dgram模块实现UDP通信

    1.什么是UDP? 这里简单介绍下,UDP,即用户数据报协议,一种面向无连接的传输层协议,提供不可靠的消息传送服务.UDP协议使用端口号为不同的应用保留其各自的数据传输通道,这一点非常重要.与TCP相 ...

  3. 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.1

    HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...

  4. TODO:Golang语言TCP/UDP协议重用地址端口

    TODO:Golang语言TCP/UDP协议重用地址端口 这是一个简单的包来解决重用地址的问题. go net包(据我所知)不允许设置套接字选项. 这在尝试进行TCP NAT时尤其成问题,其需要在同一 ...

  5. 利用Docker技术实现UDP广播效果(网络编程python版)

    docker的安装见官方文档 我使用的系统为Ubuntu16.04 Ubuntu系统安装docker文档地址:https://docs.docker.com/engine/installation/l ...

  6. 【Win 10 应用开发】UDP广播

    我们知道,对于UDP协议的通信,除了可以用来聊天外,可以发送广播数据.只要向广播地址的某个端口发送数据就可以进行广播,子网中只要监听该端口的socket就能收到广播消息. 最简单的方法就是向255.2 ...

  7. 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.2

    HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...

  8. 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.0.1

    HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...

  9. 高性能 TCP & UDP 通信框架 HP-Socket v3.5.3

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

随机推荐

  1. Git_Windows 系统下Git安装图解

    Windows 系统下Git安装图解  心得  :很成功~ 简单来说Git是一个免费的.开源的版本控制软件,从功能上讲,跟我们比较熟悉的Subversion(SVN)这类版本控制软件没什么两样.由于工 ...

  2. nodejs学习第一天

    //按照nodejs文档上第一页的例子敲了一遍运行了 迷茫 先这样吧 慢慢来 const http = require('http'); const host = '127.0.0.1'; const ...

  3. Android读取RAM,ROM,SD卡容量

    1)简介 一般人们在买手机的时候,在手机配置上都会出现"内存容量:512MB ROM+512MB RAM "等等类似这样的说明,可能很多人都知道RAM的意思就是运存的意思,但是对于 ...

  4. web前端开发(5)

    CSS的一些问题: 一般情况下,尽量使用class选择器 解决点击超链接后hover 样式不出现多次问题:a:visited  a:hover 的顺序是问题所在,记住 love hate  L(lin ...

  5. CentOS 7.0启用iptables防火墙

    CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止fir ...

  6. 布料解算插件 Qualoth 重点参数分享

    前言 Qualoth是韩国FXGear公司推出的一款布料模拟插件,可以计算出很自然的衣褶以及动态效果,并且能应对大幅度动作的碰撞解算,可以和Houdini的Cloth Solver相媲美: 目前这款插 ...

  7. Part 82 to 85 Talking about Generic queue, stack collection class

    Part 82   Generic queue collection class Part 83   Generic stack collection class Part 84   Real tim ...

  8. Jquery AJax Post 返回值问题

    var msg=0; Validater('abc'); function Validater(Name) { var itemId = 1; $.ajax({ url: 'adminmenu/Val ...

  9. OpenGl从零开始之坐标变换

    http://www.tuicool.com/articles/uiayYrI OpenGL学习脚印: 坐标变换过程(vertex transformation) http://blog.csdn.n ...

  10. Javascript获取URL地址变量参数值的方法

    今天碰到在做一个动态页面的时候,需要用到 URL 的参数值来作判断,从而决定某一块内容在当前页面是否显示.例如exampe.html?parm1=xxx&parm2=xxx&parm3 ...