UDP之socket编程实例
来源:互联网 发布:企业网络信息平台构建 编辑:程序博客网 时间:2024/06/06 20:51
不讲解了,要求读者:
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;} // 返回值为零时表示成功WSAStartup SOCKET 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;}
阅读全文
0 0
- UDP之socket编程实例
- linux udp socket编程实例
- Netty学习之二--Java socket编程(UDP实例)
- java-----Socket编程之UDP
- C# Socket编程之UDP
- Linux 编程之 【socket】 udp
- 十、Socket之UDP编程
- socket编程之udp发送 .
- 计算机网络socket编程之UDP
- 网络编程之udp socket
- Linux之UDP SOCKET 编程
- UDP windows下socket编程实例
- UDP windows下socket编程实例
- linux socket编程 TCP和UDP实例
- Socket编程之UDP发送、接收编程
- python的socket编程之udp编程
- 【黑马程序员】黑马入学准备篇:网络编程之 TCP、UDP和Socket综合实例
- [python] 专题七.网络编程之套接字Socket、TCP和UDP通信实例
- C语言中取地址符&做函数形参?—— 引用的讨论
- Circuit上的电路构建
- Acm2-快速幂、位运算、递归
- iOS 数组与指针经典笔试题
- 栈链的实现
- UDP之socket编程实例
- 什么是前端工程师?前端工程师需要掌握什么技能?
- 不调用库函数,模拟实现strcpy函数
- 数据库访问JavaBean
- 浅析数据库(DB)、操作数据存储(ODS)和数据仓库(DW)的区别与联系
- 4.3
- jQuery ajax
- 5.5判断是闰年还是平年
- 小程序学习之tab选项卡