C/C++UDP套接字之一般流程
来源:互联网 发布:ps是什么软件 编辑:程序博客网 时间:2024/06/08 03:34
一、UDP套接字服务端架构步骤
1. //初始化套接字环境WSAStartup2. //初始化地址和端口
3. //创建UDP套接字socket
4. //绑定端口bind
5. //用recvfrom接收数据
6. //用sendto发送数据
7. //退出或者返回第5步继续
二、UDP客户端架构步骤
1. //初始化套接字环境WSAStartup2. //初始化地址和端口
3. //创建UDP套接字socket
4. //用sendto发送数据
5. //用recvfrom接收数据
三、示例
服务器:
#include <winsock.h>#include <stdio.h>#include <iostream>#pragma comment(lib, "ws2_32.lib")using namespace std;int main(){/*===================UDP套接字服务端架构步骤=================*/printf("server:\n");//1、初始化套接字环境WSAStartupWSADATA wsadata;int nError = WSAStartup(MAKEWORD(2, 2), &wsadata);if (nError != 0){printf("初始化 ERROR\n");return -1;}//2、初始化地址和端口unsigned short CPORT = 6556;SOCKADDR_IN serverAddr, clientAddr;serverAddr.sin_family = AF_INET;serverAddr.sin_port = htons(CPORT);//端口serverAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//IP//3、创建UDP套接字socketSOCKET server = socket(AF_INET, SOCK_DGRAM, 0);//make a socketif (server == INVALID_SOCKET){printf("create socket failed!\n");closesocket(server);WSACleanup();return -1;}//4、绑定端口bindint retVal = bind(server, (sockaddr*)(&serverAddr), sizeof(serverAddr));//bind socket to addressif (retVal == SOCKET_ERROR){printf("bind failed!\n");closesocket(server);WSACleanup();return -1;}//5、用recvfrom接收数据int len = sizeof(clientAddr);while (1){char buf[256] = {};int r = recvfrom(server, buf, 256, 0, (sockaddr*)&clientAddr, &len);if (r == SOCKET_ERROR){printf("server 接收数据出错\n");}UINT uip = clientAddr.sin_addr.S_un.S_addr;printf("%s 来自于IP:%d.%d.%d,%d \n", buf, LOBYTE(uip), HIBYTE(uip), LOBYTE(HIWORD(uip)), HIBYTE(HIWORD(uip)));//6、用sendto发送数据char sbuf[256] = {};cin.getline(sbuf, 256);sendto(server, sbuf, 256, 0, (sockaddr*)&clientAddr, len);//7、退出或者返回第5步继续}getchar();getchar();return 0;}
客户端:
#include <winsock.h>#include <stdio.h>#include <iostream>#pragma comment(lib, "ws2_32.lib")using namespace std;int main(){/*===================UDP套接字客户端架构步骤=================*/printf("client:\n");//1、初始化套接字环境WSAStartupWSADATA wsadata;int nError = WSAStartup(MAKEWORD(2, 2), &wsadata);if (nError != 0){printf("初始化 ERROR\n");return -1;}//2、初始化地址和端口unsigned short CPORT = 6556;SOCKADDR_IN serverAddr, clientAddr;serverAddr.sin_family = AF_INET;serverAddr.sin_port = htons(CPORT);//端口serverAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//IP//3、创建UDP套接字socketSOCKET client = socket(AF_INET, SOCK_DGRAM, 0);//make a socketif (client == INVALID_SOCKET){printf("create socket failed!\n");closesocket(client);WSACleanup();return -1;}//6、用sendto发送数据while (1){char sbuf[256] = {};cin.getline(sbuf, 256);sendto(client, sbuf, 256, 0, (sockaddr*)&serverAddr, sizeof(serverAddr));//5、用recvfrom接收数据int len = sizeof(clientAddr);char buf[256] = {};int r = recvfrom(client, buf, 256, 0, (sockaddr*)&clientAddr, &len);if (r == SOCKET_ERROR){printf("client 接收数据出错\n");}UINT uip = clientAddr.sin_addr.S_un.S_addr;printf("%s 来自于IP:%d.%d.%d,%d \n", buf, LOBYTE(uip), HIBYTE(uip), LOBYTE(HIWORD(uip)), HIBYTE(HIWORD(uip)));//7、退出或者返回第5步继续}getchar();getchar();return 0;}
阅读全文
0 0
- C/C++UDP套接字之一般流程
- C/C++-套接字一般流程
- C++/MFC-套接字CSocket之一般流程
- C++/MFC-套接字CSocket之UDP
- Linux C 套接字socket UDP
- c文件操作的一般流程
- Socket 之 2: UDP套接字
- Socket之UDP套接字小例子
- 网络编程之套接字UDP
- Linux网络编程之UDP套接字
- linux网络编程之udp套接字
- 网络套接字socket编程之UDP
- JAVA套接字之UDP编程
- C语言网络编程(二)建立套接字通讯UDP
- TCP和UDP套接字编程基本流程
- TCP/UDP的套接字Socket通信工作流程
- Linux C网络编程之Socket套接字
- c 语言套接字编程
- cocos2dx 植物大战僵尸 21 塔基的更新
- okhttp使用https忽略证书验证
- Apache 服务器下载及安装
- 极光推送集成步骤及注意事项
- android sqlite 一次创建多个表
- C/C++UDP套接字之一般流程
- 91-95.c个人练习。
- USACO之Prime Cryptarithm
- Vue jquery.masonry 滑动自动加载 瀑布流
- C#文本框的KeyPress事件对键盘输入进行限制
- 主元素I
- 23.6 23.7 Web environment Web环境变量读取
- JavaMail笔记
- 通过NFS方式进行源码级别的共享进行多台机器间的部署。