UDP客户端程序(C语言)

2023-11-07

UDP客户端程序,与UDP服务器端程序配合使用

Visual Stdio 运行

// UDP客户端.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<stdio.h>
#include<winsock2.h>
#pragma comment (lib,"ws2_32")
	//静态加入一个lib文件,也就是库文件ws2_32.lib文件,提供了对网络相关API的支持
int main()
{
	//WSA是web server API的简写
	WSADATA wsaData;
	WSAStartup(MAKEWORD(2, 2), &wsaData);
	//在使用winsock相关函数时需要对winsock库进行初始化,而在使用完成后需要对winsock库进行释放
	//需要初始化winsock库的版本号
	//一个指向WSADATA的指针。该函数的返回值为0,说明函数调用成功。如果调用失败,则返回其他值
	//MAKEWORD是合成一个字,用来表示版本信息的

	SOCKET sClient = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
	//创建套接字
	//指定地址族  AF表示地址族,PF表示协议族
	//指定新套接字描述符的类型
	//指定应用程序所使用的通信协议	
	//sServer就成了一个套接字描述符
	
	printf("socket create successfully\n");

	struct sockaddr_in ServerAddr;

	printf("init connect ...\n");

	ServerAddr.sin_family = AF_INET;
	ServerAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
	ServerAddr.sin_port = htons(1234);
		//htons() 转换字节序
	//对sockaddr_in结构体填充地址、端口等信息


	char szMsg[MAXBYTE] = { 0 };
	lstrcpy(szMsg, "Hello Server!\r\n");
	int nSize = sizeof(ServerAddr);
	sendto(sClient, szMsg, strlen(szMsg) + sizeof(char), 0, (SOCKADDR*)&ServerAddr, nSize);
	//该函数是UDP协议双方用来接受数据的函数
	//套接字描述符
	//要发送数据的缓冲区
	//指定第二个参数的长度
	//通常赋0值
	//一个指向sockaddr结构体的指针,这里给出接受消息的地址信息    
	//指定第五个参数的长度
	//之后ServerAddr存的就是接收到的地址信息

	nSize = sizeof(ServerAddr);
	recvfrom(sClient, szMsg, MAXBYTE, 0, (SOCKADDR*)&ServerAddr, &nSize);

	printf("Server Msg: %s \r\n", szMsg);
	//该函数是UDP协议双方用来接受数据的函数,用法与sendto相同
	WSACleanup();//释放winsock库


	system("pause");

	return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UDP客户端程序(C语言) 的相关文章

  • ubuntu 下安装微软字体和 console

    https www cnblogs com feipeng8848 p 9649089 html 转载于 https www cnblogs com zach0812 p 11514680 html
  • SJTU简单路径数目

    Description 大家还记得邻接表类吗 没错 邻接表是表示稀疏图 边数比较少的图 的一种很好的数据结构 现在 我们要求使用深度优先遍历的思想 利用邻接表类 对给定的有向图 找出从指定结点start出发 长度为M的所有简单路径 简单路径
  • 超详细的卷积后大小的计算公式

    计算公式定义 定义几个参数 输入图片大小 W W 卷积核大小 F F 步长 S padding的像素数 P 于是我们可以得出计算公式为 N W F 2P S 1 输出图片大小为 N N 以resnet50为例 输入为 1 3 224 224
  • 手机耳机怎么在电脑上说话_手机耳机怎样当做电脑麦克风?

    首先 这篇文章讲的是有绿粉两个颜色的耳机 麦克接口的电脑 方法一 某宝9 9一条耳机一分二分线器进行解决 注意默认录音设备是否设置对了 方法二 玄学声卡 某些电脑的自带声卡很神奇 可以玄学逆转电流 就比如我家电脑 只要把手机耳机 单线耳机
  • Hive启动报错(个人遇到问题&解决方法)

    hive执行sql报错 FAILED SemanticException org apache hadoop hive ql metadata HiveException java lang RuntimeException Unable
  • C++ 代码换行

    1 字符串太长 换行显示 怎么办 2 使用反斜杠 如下 string str abcd 1234 注意 反斜杠后面不准有任何字符 下一行开头的制表符不包含在整个字符串中 但是下一行开头的空格符包含在整个字符串中 3 使用双引号 如下 str
  • 浅谈关于QT中Webkit内核浏览器

    关于QT中Webkit内核浏览器是本文要介绍的内容 主要是来学习QT中webkit中浏览器的使用 提起WebKit 大家自然而然地想到浏览器 作为浏览器内部的主要构件 WebKit的主要工作是渲染 给定一个HTML文件 WebKit的工作是
  • linux设备管理之设备号与次设备号

    linux设备管理之主设备号与次设备号 jinzi 博客园 剽窃 过来的 记录下 以备查 主设备号和次设备号 一个字符设备或者块设备都有一个主设备号和次设备号 主设备号和次设备号统称为设备号 主设备号用来表示一个特定的驱动程序 次设备号用来
  • 使用 Python 对股票数据分析预测

    使用 Python 对股票数据分析预测 文章目录 使用 Python 对股票数据分析预测 目录索引 模块安装 股票数据获取 雅虎财经 Quandl 模块 Pandas Datareader 模块 数据预处理 缺失值查找 数据规范化 股价涨跌
  • 前端埋点VS后端埋点

    前端埋点比后端埋点更灵活 比如页面停留时间 点击下拉框动作等都可以通过埋点接口让后端记录下来 而后端埋点 这些是记录不下来的 因为没有请求 后端埋点还有一个问题 有可能前端不同按钮调用后端同一个接口 此时后端埋点是区分不出来的 后端埋点又分
  • 代码习惯

    补个liangs333的代码习惯 include
  • 全面 Serverless 化,阿里云微服务引擎 MSE 重磅升级

    微服务已成为企业数字化首选的应用架构 并正在向缩短服务的构建周期和降低资源成本 提升架构质量和架构效率两个方向演进 今天 阿里云正式宣布微服务引擎 MSE 重磅升级 全面 Serverless 化 带来两大新形态和两大新体验 产业新形态 业
  • [Android AIDL系列 1] 手动编译aidl文件,生成Java、C++[android]、C++[ndk]、Rust接口

    AIDL文件在Android系统上应用广泛 和底层的Binder机制紧密关联 在Android源码或者Android Studio中通常是自动编译aidl文件 生成对应语言的接口文件 做应用层Java开发 aidl和binder封装的比较
  • centos7虚拟网卡其他服务器不识别,Vmware10 下安装centos7,网卡无法识别问题处理...

    问题表现 之前安装的是32位版本的centos5 后来操作不当损坏 于是安装了64位版本的centos7 安装后网卡无法识别 用如下第一种方式顺利解决 网络连接使用nat方式 由于Vmware虚拟网卡和linux兼容问题导致驱动无法正常安装
  • Retrofit+OKHttp+RxAndroid,图文最详细解释(Kotlin)

    文章目录 一 Retrofit 1 上图说明了如下几点 2 Retrofit 对Okhttp做了什么 3 下面我们来看一下Retrofit的具体使用 1 导入依赖 module build gradle下 2 添加网络权限 src main
  • mac iterm2快捷键

    mac iterm2快捷键 1 命令一 查找 Cmd f 自动完成 Cmd 命令历史 Cmd Shift H
  • vue 组件同页面多次调用 props 传值无效

    项目场景 在同一个编辑页面使用了同一个Vue组件 导致props 传值无效 问题描述 在做一个文章编辑的页面 需要通过切换文章类型 音频 视频 显示隐藏上传不同类型的按钮给用户上传 例如以下代码会出现一个奇怪的问题 当我从article m
  • MySQL笔记 —— 基础(概念,对于数据库、表、数据的各种操作语句)

    目录 关系型数据库 创建 查看 删除数据库 创建表 查询表 删除表 修改表结构 插入数据 删除数据 修改数据 查询语句 where与having的区别 语句的执行顺序 别名 子句中的运算符 limit 分页 关系型数据库 数据库与普通文件系
  • SQL每日一练(牛客新题库)——第3天: 条件查询

    文章目录 1 查找某个年龄段的用户信息 2 查找除复旦大学的用户信息 3 用where过滤空值练习 4 高级操作符练习 1 5 如何让刷题变得更高效 1 查找某个年龄段的用户信息 题目 现在运营想要针对20岁及以上且23岁及以下的用户开展分

随机推荐