UDP之socket编程实例
不讲解了,要求读者:
1. 知道UDP是什么
2. 索求Windows环境下的socket编程函数
3. 已经配置好了编译环境——在Tools-option-中的设置
客户端代码
#include <stdio.h>
#include <winsock2.h>
#include <iostream>
#pragma comment(lib, "ws2_32.lib")
using namespace std;bool BindSocket(SOCKET& socket,short port ,const char* Ip){sockaddr_in address;address.sin_family=AF_INET;address.sin_addr.s_addr =inet_addr(Ip);address.sin_port=htons(port);if(SOCKET_ERROR == bind(socket,(const struct sockaddr*)&address,sizeof(struct sockaddr)) ){return false;} return true;
}int main()
{WORD wVersionRequested;WSADATA wData;int err;int port; //客户端端口号 int Otherport; //服务器端口号 char IPaddr[18]; //客户端Ip char OtherIP[18]; //服务器Ip wVersionRequested = MAKEWORD( 1, 1 ); // 请求WinSock库err = WSAStartup( wVersionRequested, &wData );if(err!=0) {return -1;} // 返回值为零时表示成功WSAStartupSOCKET sockCli = socket(AF_INET, SOCK_DGRAM, 0); //创建Socket if(sockCli < 0){cout << "socket creation failed" << endl;return 0; } cout << "socket created" << endl;cout << "请输入本机IP:" << endl; //输入客户端IP和端口号 gets(IPaddr);printf("请输入本机端口号:\n");cin >> port;if(!BindSocket(sockCli,port,IPaddr)){ //将本地IP地址和端口号绑定到所创建的套接字上cout << "Bind failed" << endl;return 0; } cout << "Bind Socket success " << endl;sockaddr_in address; //服务器的IP和端口号 cout << "请输入服务器的IP" << endl;cin >> OtherIP;cout << "请输入服务器的端口号" << endl;cin >> Otherport;address.sin_family=AF_INET;address.sin_addr.s_addr=inet_addr(OtherIP); address.sin_port=htons(Otherport);char talk[100]="t"; for(int i=0;i<100;i++){ //发送100个数据包 sendto(sockCli,talk, sizeof(talk), 0,(const struct sockaddr*)&address,sizeof(struct sockaddr) );}closesocket(sockCli); WSACleanup(); return 0;
}
服务器代码:
#include <stdio.h>
#include <iostream>
// c++ include lib from windows
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
using namespace std;bool BindSocket(SOCKET& socket,short port ,const char* Ip){sockaddr_in address;// set address of socket from socket family AF_INET;address.sin_family=AF_INET;address.sin_addr.s_addr =inet_addr(Ip);// set machine IP; address.sin_port=htons(port); // set machine port// all above belong to net words;if(SOCKET_ERROR == bind(socket,(const struct sockaddr*)&address,sizeof(struct sockaddr)) ){return false;} return true;
}int main()
{WORD wVersionRequested;WSADATA wsaData;int err;int port; //服务器端口号 char IPaddr[18]; //服务器Ip sockaddr_in address;int n=sizeof(struct sockaddr);char talk[100]={0};char buffer[100] = {0};wVersionRequested = MAKEWORD( 1, 1 ); // 请求WinSock库 err = WSAStartup( wVersionRequested, &wsaData );if(err!=0) {return -1;} SOCKET sockSrv = socket(AF_INET, SOCK_DGRAM, 0); //创建Socket /* Something about socket return value. */if(sockSrv < 0){cout << "socket creation failed" << endl;return 0;}cout << "socket created" << endl;cout << "请输入本机IP:" << endl;cin >> IPaddr;printf("请输入本机端口号:\n");cin >> port;//cout << IPaddr << endl << port << endl;while(! BindSocket(sockSrv,port,IPaddr)){ //将本地IP地址和端口号绑定到所创建的套接字上 cout << "Bind fail" << endl;cout << "请输入本机IP:" << endl;cin >> IPaddr;printf("请输入本机端口号:\n");cin >> port;}cout << "Bind Socket success " << endl;/*这里不知道对不对*/ int num =0;// over-time setting, and ACKpp setting;// more about recvfrom function;while(1){ //接受来自客户端的数据包 if(recvfrom(sockSrv,buffer, 100,0,(struct sockaddr*)&address,&n) == SOCKET_ERROR ) {cout << "接收失败" << endl; }else{num++;}cout << num << endl;// output situation;}closesocket(sockSrv); WSACleanup(); return 0;
}
UDP之socket编程实例相关推荐
- C语言 socket编程实例
C语言 socket编程实例 一. 面向连接的流式套接字 C/S 例子 二. 非阻塞的多人聊天服务器端例子 三. 简单的 IPv6 UDP socket编程 四.使用wireshark抓包分析tcp协 ...
- TCP与UDP在socket编程中的区别
TCP与UDP在socket编程中的区别 一.TCP与UDP的区别 基于连接与无连接 对系统资源的要求(TCP较多,UDP少) UDP程序结构较简单 流模式与数据报模式 TCP保证数据正确性,UDP可 ...
- Socket编程实例
2019独角兽企业重金招聘Python工程师标准>>> Java具有非常强大的网络应用开发能力.学习网络编程,估计都是从编写一个socket通信开始,从中慢慢掌握网络编程的一点点知识 ...
- tcp与udp的socket编程,udp代码实现客户端服务端,tcp代码实现客户端服务端(单线程、多线程、多进程分别实现),三次握手
socket编程 网络字节序 定义 为什么网络数据需要转换为网络字节序? Udp协议 Tcp协议 Udp的socket编程 编程流程 接口 创建套接字 绑定地址信息 发送 接收 关闭 主机字节序转换成 ...
- android c++ socket编程,C++ 中 socket编程实例详解
C++ 中 socket编程实例详解 sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW):基于TCP的soc ...
- VC++ socket编程实例
1. 两天计算机通信需要协议,通信的两台计算机IP必须唯一 2. 同一个计算机可以进行多个应用程序与其他计算机通信,IP地址唯一,而端口号是区别同一计算机(同一IP)的唯一 ...
- 基于 UDP 的 Socket 编程
基于 UDP 的 Socket 编程 UDP的定义 •UDP 是用户数据报协议,提供的是无连接.不可靠信息传送服务.Java 主要提供了两个类来实现基于 UDP 的 Socket 编程. UDP编程的 ...
- socket编程实例_NIO之网络编程源码阅读
之前分析了ByteBuffer.Channel相关的基本知识,现在对于NIO的基石已经有了基本的了解.不过NIO最突出的特性还是其基于select编程模型的网络编程体验. NIO网络编程通常有两种使用 ...
- LiteOS通信模组教程05-LiteOS的SAL及socket编程实例
1. SAL套接字抽象层 SAL全称Socket Abstract Layer,即套接字抽象层,主要作用是对上层应用提供一层统一的 socket 编程接口,屏蔽底层网络硬件的差异. LiteOS的SA ...
- TCP 和 UDP 在socket编程中的区别
(网络收集) 一.TCP与UDP的区别 基于连接与无连接 对系统资源的要求(TCP较多,UDP少) UDP程序结构较简单 流模式与数据报模式 TCP保证数据正确性,UDP可能丢包 TCP保证 ...
最新文章
- 领导者必须学会做的十件事情
- 玩转Parse(第一篇:新手入门)
- CentOS下yum源epel扩展源
- android安全问题(二) 程序锁
- boost::mp11::mp_sort相关用法的测试程序
- python操作文件和目录_python文件和目录操作方法
- C#的COM接口定义细则
- 【转】webkit webApp 开发技术要点总结
- r语言 转录本结构及丰度_生信人的R语言视频教程语法篇第三章:数行天下(4)R中的数据——从结构角度划分(数组)...
- VS2015用nuget包管理器离线安装nupkg包
- 机器学习入门:隐马尔科夫模型-8
- 南卡、ikf蓝牙耳机怎么样?南卡、ikf两款国产高性价比蓝牙耳机对比评测
- Appops权限管理
- TCP BBR Startup gain计算总结和Startup失速问题
- 【java华为机试】HJ10 字符个数统计
- 进入Ubuntu的命令行模式
- 网约车市场重构进行时,高端出行能否撬动大格局?
- Dochub v2.2 发布,构建你自己的百度文库
- 深入浅出话多态(上)——具体而微
- 我在办公室鱼缸里 找到了窃密设备【反窃密知识分享】
热门文章
- mybatis 映射问题(mysql date与java Date类型格式错误)
- 【MATLAB图像融合】[15]一个自适应PCNN的DEMO详解
- kubernetes12(kubernetes的储存)
- oracle12c备份与恢复,Oracle Database12c Oracle RMAN备份与恢复(第4版)
- 工欲善其事必先利其器之学编程的电脑需要什么配置
- ovirt4.4.10安装配置USB重定向
- SSM框架利用Filter实现页面不登陆拦截,禁止跳过登录页面不登陆强制访问
- go编译成linux可执行,Golang 编译Mac、Linux、Windows多平台可执行程序
- Bilinear Pairing双线性配对的解释
- DHT,种子转磁力算法 种子info_hash 代码亲测