c语言通信之网络通信

除了上一章说的串口通信,还有网络通信也是一种常见的通信方式。下面是一个基于TCP协议的网络通信的例子:

1.创建socket

在C语言中,可以使用socket()函数创建一个socket。该函数的第一个参数是协议族,第二个参数是socket类型。例如,要创建一个TCP socket,可以使用以下代码:

int sockfd;  
sockfd = socket(AF_INET, SOCK_STREAM, 0);

2.绑定地址

创建socket后,需要将其绑定到一个IP地址和端口号上。可以使用bind()函数来绑定地址。例如,要将socket绑定到本机的IP地址和端口号1234上,可以使用以下代码:

struct sockaddr_in addr;  
addr.sin_family = AF_INET;  
addr.sin_addr.s_addr = INADDR_ANY;  
addr.sin_port = htons(1234);  
bind(sockfd, (struct sockaddr *)&addr, sizeof(addr));

3.连接服务器

绑定地址后,需要连接到服务器。可以使用connect()函数连接到服务器。例如,要连接到服务器的IP地址和端口号,可以使用以下代码:

struct sockaddr_in servaddr;  
servaddr.sin_family = AF_INET;  
servaddr.sin_addr.s_addr = inet_addr("服务器IP地址");  
servaddr.sin_port = htons(服务器端口号);  
connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));

4.读写数据

连接到服务器后,就可以进行数据通信了。可以使用read()函数从socket读取数据,使用write()函数向socket写入数据。例如,要从socket读取一个字节的数据,可以使用以下代码:

char buffer[1];  
int n = read(sockfd, buffer, 1);

如果要向socket写入一个字节的数据,可以使用以下代码:

char buffer[1] = {'a'};  
int n = write(sockfd, buffer, 1);

5.关闭socket

通信结束后,需要关闭socket。可以使用close()函数关闭socket。例如,要关闭刚才创建的socket,可以使用以下代码:

close(sockfd);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/150892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP HTTPS 独特的魅力

目录 HTTP协议 HTTP协议的工作过程 首行 请求头(header) HOST Content-Length​编辑 User-Agent(简称UA) Referer Cookie 空行 正文(body) HTTP响应详解 状态码 报文格式 HTTP响应格式 如何…

鸿蒙:Harmony开发基础知识详解

一.概述 工欲善其事,必先利其器。 上一篇博文实现了一个"Hello Harmony"的Demo,今天这篇博文就以"Hello Harmony" 为例,以官网开发文档为依据,从鸿蒙开发主要的几个方面入手,详细了解一下鸿蒙开…

RAID技术复习笔记

Raid(Redundant Array of independent Disks)独立磁盘冗余阵列:磁盘阵列 Raid 分为:软raid、硬raid、软硬混合三种。 软Raid:所有的功能均有操作系统和CPU来完成,没有独立的raid控制、处理芯片和IO处理处理芯片。 硬R…

车载通信架构 —— 传统车内通信网络发展回顾

车载通信架构 —— 传统车内通信网络发展回顾 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何…

c语言-数据结构-堆

目录 一、二叉树 1、二叉树的概念 2、完全二叉树和满二叉树 3、完全二叉树的顺序存储 二、堆 2、堆的概念与结构 3、堆的创建及初始化 4、堆的插入(小堆) 5、堆的删除 6、显示堆顶元素 7、显示堆里的元素个数 8、测试堆的各个功能 9、 实现堆…

华为 HUAWEI 数通路由交换设备 基线安全加固操作

帐号管理 ELK-Huawei-01-01-01 编号: ELK-Huawei-01-01-01 名称: 无效帐户清理 实施目的: 删除与设备运行、维护等工作无关的账号 问题影响: 账号混淆,权限不明确,存在用户越权使用的可能。 系统当…

学生邮箱白嫖/免费安装JetBrains全家桶(IDEA/pycharm等) —— 保姆级教程

🧸欢迎来到dream_ready的博客,📜相信您对博主首页也很感兴趣o (ˉ▽ˉ;) 博主首页,更多redis、java等优质好文以及各种保姆级教程等您挖掘! 目录 前言 JetBrains全家桶介绍 申请过程: 获取学…

这个技术也能管理教学质量,厉害了!

在当今数字化时代,教育领域也在积极应用先进的技术来提升教学质量和管理效率。在线巡课系统作为其中的一种创新工具,为学校管理者和教育工作者提供了便捷而高效的管理手段。 在线巡课系统通过数字化、自动化的方式,实现了对课堂教学的全面监控…

Python基础:正则表达式(regular expression)详解

在Python中,正则表达式是一种强大的工具,可用于匹配和操作字符串。什么是正则表达式? 正则表达式是一种模式匹配语言,用于匹配字符串中的特定模式。这些模式可以是字母、数字、字符组合或其他符号。正则表达式通常用于文本处理、网…

C语言-字符串替换

本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换: 原字母对应字母AZBYCXDW……XCYBZA 输入格式: 输入在一行中给出一个不超过80个字符、并以回车结束的字符串。 输出格式: 输出在一行中给出替换完成后的字…

excel怎么能锁住行 和/或 列的自增长,保证粘贴公式的时候不自增长或者只有部分自增长

例如在C4单元格中输入了公式: 现在如果把C4拷贝到C5,D3会自增长为D4: 现在如果想拷贝的时候不自增长,可以先把光标放到C4单元格,然后按F4键,行和列的前面加上了$符号,锁定了: …

Linux中的进程终止(详解)

Linux中的进程终止 1. 进程退出场景2. 进程常见退出方法2.1 _exit函数2.2 exit函数2.3 return退出 1. 进程退出场景 代码运行完毕,结果正确代码运行完毕,结果不正确代码异常终止 2. 进程常见退出方法 正常终止(可以通过 echo $? 查看进程…

【小黑嵌入式系统第九课】PSoC 5LP第一个实验——LED、字符型LCD显示实验

上一课: 【小黑嵌入式系统第八课】初识PSoC Creator™开发——关于PSoC Creator&下载、创建项目、单片机中的hello world(点亮一个led) 文章目录 1 实验目的2 实验要求3 实验设备4 实验原理1. 基于 PWM 原理的 LED 亮度控制2. 时间的计量3. 按键抖动…

超全整理,Pytest自动化测试框架-多进程(pytest-xdist)运行总结...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 平常我们功能测试…

QtC++与QUndoView详解

介绍 QUndoView 的作用: 显示操作历史: QUndoView 用于显示 QUndoStack 中记录的撤销和重做操作的历史记录。用户可以通过该视图查看操作的执行顺序。 支持交互: 提供了用户界面元素,允许用户执行撤销和重做操作,以及…

SpringBoot-AOP学习案例

4. AOP案例 SpringAOP的相关知识我们就已经全部学习完毕了。最后我们要通过一个案例来对AOP进行一个综合的应用。 4.1 需求 需求:将案例中增、删、改相关接口的操作日志记录到数据库表中 就是当访问部门管理和员工管理当中的增、删、改相关功能接口时&#xff0…

整形数据和浮点型数据在内存中的存储差别

愿所有美好如期而遇 我们先来看代码,猜猜结果是什么呢? int main() {//以整型数据的方式存储int n 10;float* m (float*)&n;//以整型数据的方式读取printf("%d\n", n);//以浮点型数据的方式2读取printf("%f\n", *m);printf(&…

Linux下查看pytorch运行时真正调用的cuda版本

一般情况我们会安装使用多个cuda版本。而且pytorch在安装时也会自动安装一个对应的版本。 正确查看方式: 想要查看 Pytorch 实际使用的运行时的 cuda 目录,可以直接输出 cpp_extension.py 中的 CUDA_HOME 变量。 import torch import torch.utils imp…

系统移植-uboot

uboot概述: 操作系统运行之前运行的一小段代码,用于将软硬件环境初始化到 一个合适的状态,为操作系统的加载和运行做准备(其本身不是操作系统) Bootloader基本功能 1.初始化软硬件环境 2.引导加载linux内核 3. 给lin…

13 Go的错误处理

概述 在上一节的内容中,我们介绍了Go的接口,包括:定义接口、实现接口、使用接口、空接口等。在本节中,我们将介绍Go的错误处理。在Go语言中,错误处理是一种重要的编程模式,它用于处理可能出现的错误或异常情…