这是C++ SOCKET网络程序中的C/S结构之UDP "Hello World !",共两个控制台工程:

  1. //////////////////////////////////////////////////////////////////////////
  2. // UDPServer.cpp
  3. #include <stdio.h>
  4. #include <WINSOCK2.H>
  5. #pragma comment(lib,"WS2_32.lib")
  6. #define BUF_SIZE    64
  7. int main(void)
  8. {
  9. WSADATA wsd;
  10. SOCKET  s;
  11. int     nRet;
  12. // 初始化套接字动态库
  13. if(WSAStartup(MAKEWORD(2,2),&wsd) != 0)
  14. {
  15. printf("WSAStartup failed !/n");
  16. return 1;
  17. }
  18. // 创建套接字
  19. s = socket(AF_INET,SOCK_DGRAM,0);
  20. if(s == INVALID_SOCKET)
  21. {
  22. printf("socket() failed ,Error Code:%d/n",WSAGetLastError());
  23. WSACleanup();
  24. return 1;
  25. }
  26. SOCKET      socketSrv = socket(AF_INET,SOCK_DGRAM,0);
  27. SOCKADDR_IN addrSrv;
  28. SOCKADDR_IN addrClient;
  29. char        buf[BUF_SIZE];
  30. int         len = sizeof(SOCKADDR);
  31. // 设置服务器地址
  32. ZeroMemory(buf,BUF_SIZE);
  33. addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
  34. addrSrv.sin_family = AF_INET;
  35. addrSrv.sin_port = htons(5000);
  36. // 绑定套接字
  37. nRet = bind(socketSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
  38. if(SOCKET_ERROR == nRet)
  39. {
  40. printf("bind failed !/n");
  41. closesocket(s);
  42. WSACleanup();
  43. return -1;
  44. }
  45. // 从客户端接收数据
  46. nRet = recvfrom(socketSrv,buf,BUF_SIZE,0,(SOCKADDR*)&addrClient,&len);
  47. if(SOCKET_ERROR == nRet)
  48. {
  49. printf("recvfrom failed !/n");
  50. closesocket(s);
  51. WSACleanup();
  52. return -1;
  53. }
  54. // 打印来自客户端发送来的数据
  55. printf("Recv From Client:%s/n",buf);
  56. // 向客户端发送数据
  57. sendto(socketSrv,"UDP Hello World !",sizeof("UDP Hello World !"),0,(SOCKADDR*)&addrClient,len);
  58. closesocket(s);
  59. WSACleanup();
  60. return 0;
  61. }
  1. //////////////////////////////////////////////////////////////////////////
  2. // UDPClient.cpp
  3. #include <stdio.h>
  4. #include <WINSOCK2.H>
  5. #pragma comment(lib,"WS2_32.lib")
  6. #define BUF_SIZE    64
  7. int main(void)
  8. {
  9. WSADATA wsd;
  10. SOCKET  s;
  11. // 初始化套接字动态库
  12. if(WSAStartup(MAKEWORD(2,2),&wsd) != 0)
  13. {
  14. printf("WSAStartup failed !/n");
  15. return 1;
  16. }
  17. // 创建套接字
  18. s = socket(AF_INET,SOCK_DGRAM,0);
  19. if(s == INVALID_SOCKET)
  20. {
  21. printf("socket() failed, Error Code:%d/n",WSAGetLastError());
  22. WSACleanup();
  23. return 1;
  24. }
  25. char        buf[BUF_SIZE];  // 接受数据
  26. SOCKADDR_IN servAddr;       // 服务器套接字地址
  27. SOCKET      sockClient = socket(AF_INET,SOCK_DGRAM,0);
  28. int         nRet;
  29. ZeroMemory(buf,BUF_SIZE);
  30. strcpy(buf,"UDP Hello World !");
  31. // 设置服务器地址
  32. servAddr.sin_family = AF_INET;
  33. servAddr.sin_addr.S_un.S_addr = inet_addr("192.168.1.254");
  34. servAddr.sin_port = htons(5000);
  35. // 向服务器发送数据
  36. int nServAddLen = sizeof(servAddr);
  37. if(sendto(sockClient,buf,BUF_SIZE,0,(sockaddr *)&servAddr,nServAddLen) == SOCKET_ERROR)
  38. {
  39. printf("recvfrom() failed:%d/n",WSAGetLastError());
  40. closesocket(s);
  41. WSACleanup();
  42. return 1;
  43. }
  44. nRet = recvfrom(sockClient,buf,BUF_SIZE,0,(sockaddr *)&servAddr,&nServAddLen);
  45. if(SOCKET_ERROR == nRet)
  46. {
  47. printf("recvfrom failed !/n");
  48. closesocket(s);
  49. WSACleanup();
  50. return -1;
  51. }
  52. // 打印来自服务端发送来的数据
  53. printf("Recv From Server:%s/n",buf);
  54. closesocket(s);
  55. WSACleanup();
  56. return 0;
  57. }

程序运行效果:

源代码下载地址:

http://www.rayfile.com/files/733c832e-a2d8-11de-a838-0014221b798a/

http://blog.csdn.net/wangningyu/article/details/4560835

C++ Socket UDP "Hello World!"的更多相关文章

  1. Nginx学习笔记(四) 源码分析&socket/UDP/shmem

    源码分析 在茫茫的源码中,看到了几个好像挺熟悉的名字(socket/UDP/shmem).那就来看看这个文件吧!从简单的开始~~~ src/os/unix/Ngx_socket.h&Ngx_s ...

  2. 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP

    [源码下载] 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP 作者:webabcd 介绍重新想象 Windows 8 Store ...

  3. 与众不同 windows phone (31) - Communication(通信)之基于 Socket UDP 开发一个多人聊天室

    原文:与众不同 windows phone (31) - Communication(通信)之基于 Socket UDP 开发一个多人聊天室 [索引页][源码下载] 与众不同 windows phon ...

  4. 消息队列、socket(UDP)实现简易聊天系统

    前言: 最近在学进程间通信,所以做了一个小项目练习一下.主要用消息队列和socket(UDP)实现这个系统,并数据库存储数据,对C语言操作数据库不熟悉的可以参照我的这篇博客:https://www.c ...

  5. bs结构socket(udp)通信

    以前我所做的基于socket通信都是采用cs结构,现公司有一个项目需要在bs中反控设备,于是研究了一番,现将成果公布,方便以后查阅. 服务端: #region udp int recv; byte[] ...

  6. 网络编程Socket UDP

    图表流程 linux udp测试代码 //server.c #include <stdio.h> #include <stdlib.h> #include <errno. ...

  7. Unity3d之Socket UDP协议

    原文地址:http://blog.csdn.net/dingkun520wy/article/details/49201245 (一)Socket(套接字)UDP协议的特点 1.是基于无连接的协议,没 ...

  8. c# socket udp广播

    一.广播消息 由于Tcp是有连接的,所以不能用来发送广播消息.发送广播消息,必须用到Udp,Udp可以不用建立连接而发送消息.广播消息的目的IP地址是一种特殊IP地址,称为广播地址.广播地址由IP地址 ...

  9. Unity Socket UDP

    using System.Collections; using System.Collections.Generic; using System.Net.Sockets; using System.N ...

随机推荐

  1. 解决 phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接 问题

    phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接.您应该检查配置文件中的主机.用户名和密码,并确认这些信息与 MySQL 服务器管理员所给出的信息一致. 问题解决办法: 修改co ...

  2. gulp自动化框架的搭建

    自动化框架的搭建:https://github.com/zjhsd2007/www 屏蔽掉的部分是Test(文件夹的目录 也是你的项目名称);本地项目启动后 配合sass,会自动启动浏览器,然后好处多 ...

  3. Redis Cache 简介

    Microsoft Azure Redis Cache 是基于流行的开源Redis Cache 1.Microsoft Azure Redis Cache 可分为以下几个级别: Basic – 单节点 ...

  4. 20160501--struts2入门3

    一.自定义拦截器 要自定义拦截器需要实现com.opensymphony.xwork2.interceptor.Interceptor接口: public class PermissionInterc ...

  5. Web开发必备资源汇总[转]

    导读:原文来自< Best “must know” open sources to build the new Web>,译文由酷壳网陈皓整理编译< 开源中最好的Web开发的资源 & ...

  6. c#md5与SHA1验证函数

    /// <summary> /// MD5验证函数 /// </summary> /// <param name="fileName">文件的路 ...

  7. thinkphp 行为扩展

    网站程序在运行的过程每个过程都可以看做是一种行为,例如:运行应用,加载类,执行方法,加载模板,解析模板等,也就是说,我们在程序执行过程中每个 步骤都可以 定义一些点,我们可以在运行 程序的时候 检查 ...

  8. JAVA IDE下载地址

    Subclipse 各版本官网下载地址: http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240 Eclipse ...

  9. Spring学习之代理

    Spring的核心就是IOC和AOP IOC就是控制反转:   就是用配置文件的方式给javabean 赋值. 正常的在程序里;用new 的方式创建一个对象的时候,他就固定了值, 如果是注入的方式的话 ...

  10. java之表达式陷阱

    String str1 = "Hello Java的长度:10"; String str2 = "Hello Java的长度:10";  String str3 ...