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. oc中的block

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...

  2. nginx +lua +redis 构建自动缓存系统

    一. nginx环境搭建 第一步下载 LuaJIT-2.0.4.tar.gz http://luajit.org/download/LuaJIT-2.0.4.tar.gz安装 make &&a ...

  3. iOS篇之有沙盒缓存

    内存指的就是主板上的存储部件,是CPU直接与之沟通,并用其存储数据的部件,存放当前正在使用的(即执行中)的数据和程序,它的物理实质就是一组或多组具备数据输入输出和数据存储功能的集成电路,内存只用于暂时 ...

  4. iOS 设计模式之单例

    设计模式:单例 一.  单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并 ...

  5. 新浪SAE部署django博客

    步骤: 第一步:注册新浪SAE账号(即新浪微博),下载TortoiseSVN 第二步:部署代码 使用SAE来部署代码,SAE提供的是PAAS层的云服务,即不是给你一个虚拟主机而是直接上传应用.进入SA ...

  6. ubuntu server 系统,更换阿里云源(用户更新源)

    Ubuntu安装完毕后,默认使用的是官方的源,在国内访问速度很慢,这里介绍更换为阿里云的源方法. 步骤如下: 1.备份源配置文件 sudo cp /etc/apt/sources.list /etc/ ...

  7. jQuery选择器之层次选择器Demo

    测试代码: 02-层次选择器.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...

  8. hdu-5586 Sum(dp)

    题目链接: Sum Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others) Probl ...

  9. java学习系列(一)Java中的IO操作

    Java的IO流是实现输入/输出的基础,它可以方便地实现数据的输入\输出操作,在Java中把不同的输入\输出源抽象为"流",通过流的方式允许Java程序使用相同的方式来访问不同的输 ...

  10. 各种LICENSE的作用--GET

    许 多开发者和设计者希望把他们的作品作为开源项目共享,他们希望其他人能够利用和共享他们的代码. 而各种开源社区就是因为这个原因而充满活力.开源软件可以用于你能想象得到的任何应用程序,许多web设计人员 ...