C++ Socket UDP "Hello World!"
这是C++ SOCKET网络程序中的C/S结构之UDP "Hello World !",共两个控制台工程:
- //////////////////////////////////////////////////////////////////////////
- // UDPServer.cpp
- #include <stdio.h>
- #include <WINSOCK2.H>
- #pragma comment(lib,"WS2_32.lib")
- #define BUF_SIZE 64
- int main(void)
- {
- WSADATA wsd;
- SOCKET s;
- int nRet;
- // 初始化套接字动态库
- if(WSAStartup(MAKEWORD(2,2),&wsd) != 0)
- {
- printf("WSAStartup failed !/n");
- return 1;
- }
- // 创建套接字
- s = socket(AF_INET,SOCK_DGRAM,0);
- if(s == INVALID_SOCKET)
- {
- printf("socket() failed ,Error Code:%d/n",WSAGetLastError());
- WSACleanup();
- return 1;
- }
- SOCKET socketSrv = socket(AF_INET,SOCK_DGRAM,0);
- SOCKADDR_IN addrSrv;
- SOCKADDR_IN addrClient;
- char buf[BUF_SIZE];
- int len = sizeof(SOCKADDR);
- // 设置服务器地址
- ZeroMemory(buf,BUF_SIZE);
- addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
- addrSrv.sin_family = AF_INET;
- addrSrv.sin_port = htons(5000);
- // 绑定套接字
- nRet = bind(socketSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
- if(SOCKET_ERROR == nRet)
- {
- printf("bind failed !/n");
- closesocket(s);
- WSACleanup();
- return -1;
- }
- // 从客户端接收数据
- nRet = recvfrom(socketSrv,buf,BUF_SIZE,0,(SOCKADDR*)&addrClient,&len);
- if(SOCKET_ERROR == nRet)
- {
- printf("recvfrom failed !/n");
- closesocket(s);
- WSACleanup();
- return -1;
- }
- // 打印来自客户端发送来的数据
- printf("Recv From Client:%s/n",buf);
- // 向客户端发送数据
- sendto(socketSrv,"UDP Hello World !",sizeof("UDP Hello World !"),0,(SOCKADDR*)&addrClient,len);
- closesocket(s);
- WSACleanup();
- return 0;
- }
- //////////////////////////////////////////////////////////////////////////
- // UDPClient.cpp
- #include <stdio.h>
- #include <WINSOCK2.H>
- #pragma comment(lib,"WS2_32.lib")
- #define BUF_SIZE 64
- int main(void)
- {
- WSADATA wsd;
- SOCKET s;
- // 初始化套接字动态库
- if(WSAStartup(MAKEWORD(2,2),&wsd) != 0)
- {
- printf("WSAStartup failed !/n");
- return 1;
- }
- // 创建套接字
- s = socket(AF_INET,SOCK_DGRAM,0);
- if(s == INVALID_SOCKET)
- {
- printf("socket() failed, Error Code:%d/n",WSAGetLastError());
- WSACleanup();
- return 1;
- }
- char buf[BUF_SIZE]; // 接受数据
- SOCKADDR_IN servAddr; // 服务器套接字地址
- SOCKET sockClient = socket(AF_INET,SOCK_DGRAM,0);
- int nRet;
- ZeroMemory(buf,BUF_SIZE);
- strcpy(buf,"UDP Hello World !");
- // 设置服务器地址
- servAddr.sin_family = AF_INET;
- servAddr.sin_addr.S_un.S_addr = inet_addr("192.168.1.254");
- servAddr.sin_port = htons(5000);
- // 向服务器发送数据
- int nServAddLen = sizeof(servAddr);
- if(sendto(sockClient,buf,BUF_SIZE,0,(sockaddr *)&servAddr,nServAddLen) == SOCKET_ERROR)
- {
- printf("recvfrom() failed:%d/n",WSAGetLastError());
- closesocket(s);
- WSACleanup();
- return 1;
- }
- nRet = recvfrom(sockClient,buf,BUF_SIZE,0,(sockaddr *)&servAddr,&nServAddLen);
- if(SOCKET_ERROR == nRet)
- {
- printf("recvfrom failed !/n");
- closesocket(s);
- WSACleanup();
- return -1;
- }
- // 打印来自服务端发送来的数据
- printf("Recv From Server:%s/n",buf);
- closesocket(s);
- WSACleanup();
- return 0;
- }
程序运行效果:

源代码下载地址:
http://www.rayfile.com/files/733c832e-a2d8-11de-a838-0014221b798a/
http://blog.csdn.net/wangningyu/article/details/4560835
C++ Socket UDP "Hello World!"的更多相关文章
- Nginx学习笔记(四) 源码分析&socket/UDP/shmem
源码分析 在茫茫的源码中,看到了几个好像挺熟悉的名字(socket/UDP/shmem).那就来看看这个文件吧!从简单的开始~~~ src/os/unix/Ngx_socket.h&Ngx_s ...
- 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP
[源码下载] 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP 作者:webabcd 介绍重新想象 Windows 8 Store ...
- 与众不同 windows phone (31) - Communication(通信)之基于 Socket UDP 开发一个多人聊天室
原文:与众不同 windows phone (31) - Communication(通信)之基于 Socket UDP 开发一个多人聊天室 [索引页][源码下载] 与众不同 windows phon ...
- 消息队列、socket(UDP)实现简易聊天系统
前言: 最近在学进程间通信,所以做了一个小项目练习一下.主要用消息队列和socket(UDP)实现这个系统,并数据库存储数据,对C语言操作数据库不熟悉的可以参照我的这篇博客:https://www.c ...
- bs结构socket(udp)通信
以前我所做的基于socket通信都是采用cs结构,现公司有一个项目需要在bs中反控设备,于是研究了一番,现将成果公布,方便以后查阅. 服务端: #region udp int recv; byte[] ...
- 网络编程Socket UDP
图表流程 linux udp测试代码 //server.c #include <stdio.h> #include <stdlib.h> #include <errno. ...
- Unity3d之Socket UDP协议
原文地址:http://blog.csdn.net/dingkun520wy/article/details/49201245 (一)Socket(套接字)UDP协议的特点 1.是基于无连接的协议,没 ...
- c# socket udp广播
一.广播消息 由于Tcp是有连接的,所以不能用来发送广播消息.发送广播消息,必须用到Udp,Udp可以不用建立连接而发送消息.广播消息的目的IP地址是一种特殊IP地址,称为广播地址.广播地址由IP地址 ...
- Unity Socket UDP
using System.Collections; using System.Collections.Generic; using System.Net.Sockets; using System.N ...
随机推荐
- Git 常用配置和使用
Git:是一个分布式的源代码管理工具,Linux内核的代码就是用Git管理的所以它很强,也很快, 和 Vss/SVN比起来 本地Git初始化配置及其使用: 1. 初始化本地Git库:打开Git Bas ...
- android下面的文案重用
尽可能地在xml中建立各种索引,建立映射表,而不是直接每次索引,这对于大规模的文字变动来说是极有好处的.
- 总结一下const和readonly
const和readonly的值一旦初始化则都不再可以改写: const只能在声明时初始化:readonly既可以在声明时初始化也可以在构造器中初始化: const隐含static,不可以再写stat ...
- java 知识 链接
www.java2blog.com/2016/04/hashmap-in-java-with-examples.html HashMap全剖析 http://card.weibo.com/articl ...
- IOS开发中针对UIImageView的几种常用手势
// // ViewController.m // 05-手势 // // Created by wanghy on 15/9/21. // Copyright (c) 2015年 wangh ...
- PHP pear安装出现 Warning: require_once(Structures/Graph.php)...错误
今天在WINDOWS安装pear,一路无阻很顺利安装完成,接着想安装下pear email包来玩下,但接下来却报: Warning: require_once(Structures/Graph.php ...
- Linux apt-get error
csh@csh-laptop:~/ejabberd-15.03$ sudo apt-get install mysqlReading package lists... DoneBuilding dep ...
- x264_param_t结构
typedef struct x264_param_t { unsigned int cpu; // CPU 标志位 int i_threads; // 并行编码多帧; 线程数,为0则自动多线程编码 ...
- Cassandra CqlRow fetch DateType / Int32Type
phpcassa library里有个namespace : use phpcassa\Schema\DataType; 当使用cql query得到cqlrow, int32 & Date ...
- 在hyper安装openwrt
写了长长长一篇文章,结果把标签关了,这篇文章就不见了,草稿箱也没有!!! 只好直接copy原来作者的文章了 下载地址 openwrt image tulip driver 引用 Want to add ...