当前位置: 首页 > news >正文

Linux网络——Socket编程函数

一.网络命令

1.ping

ping命令用来检测网络是否连通,具体用法为:

ping + 任意网址

结果如下:

当出现上述字段时,证明网络是连通的,这里值得注意的是,ping命令执行之后会不断进行网络检测,不会停止,需要主动停止,但是我们也可以指定ping命令的检测次数,指令为:

 ping -c + 次数 + 任意网址

 如图,执行指定次数后便会立即退出。


 2.netstat

netstat是一个用来查看网络状态的重要工具,常用的选项有以下几个:

  • n:拒绝显示别名,能显示数字的全部转换为数字。
  • l:仅列出有在Listen(监听)的服务状态。
  • p:显示建立相关链接的程序名。
  • t(tcp):仅显示tcp相关选项。
  • u(udp):仅显示udp相关选项。
  • a(all):显示所有选项,默认不显示LISTEN相关。

3.watch 

watch命令可以定期执行某命令,具体用法为:

watch -n + 数字 + 命令 

即每个若干数字时长就会执行一次后边的命令。


4.pidof

pidof指令可以直接通过进程的名字来查看该进程的pid,具体用法为:

pidof + 进程名


二.UDP网络编程

1.创建Socket

#include <sys/types.h>
#include <sys/socket.h>

int socket(int domain, int type, int protocol);

该函数用于创建套接字。 

  •  参数1表示套接字的用途,一般可有两种选择:

AF_UNIX:本地

AF_INET:网络

  • 参数2表示套接字的类型,在UDP使用中,设为SOCK_DGRAM
  • 参数3表示协议的名称,一般不做处理,设为0。
  • 返回值为文件描述符,返回失败为-1

2.bind

#include <sys/types.h>
#include <sys/socket.h>

int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);

 该函数用于绑定端口号。

  • 参数1为绑定对应套接字的文件描述符。
  • 参数2为绑定端口服务器的结构体信息。
  • 参数3为结构体大小。

绑定成功返回0,绑定失败返回-1。


3.recvfrom

#include <sys/types.h>
#include <sys/socket.h>

ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen); 

该函数用于读取网络传输的数据

  • 参数1为绑定对应套接字的文件描述符。
  • 参数2为缓冲区。
  • 参数3为缓冲区大小。
  • 参数4为阻塞标记。
  • 参数5表示信息的来源。
  • 参数6为信息来源的大小

读取成功返回数据大小,失败返回-1。


4.sendto

#include <sys/types.h>
#include <sys/socket.h>

ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *src_addr, socklen_t addrlen); 

该函数用于发送网络传输的数据

  • 参数1为绑定对应套接字的文件描述符。
  • 参数2为缓冲区。
  • 参数3为缓冲区大小。
  • 参数4为阻塞标记。
  • 参数5表示信息的目的地。
  • 参数6为信息目的地的大小

读取成功返回数据大小,失败返回-1。


http://www.lryc.cn/news/433086.html

相关文章:

  • HarmonyOS 是如何实现一次开发多端部署 -- HarmonyOS自学1
  • 嵌入式硬件-ARM处理器架构,CPU,SOC片上系统处理器
  • 《JavaEE进阶》----12.<SpringIOCDI【扫描路径+DI详解+经典面试题+总结】>
  • Selenium 自动化测试:常用函数与实例代码
  • python网络爬虫(五)——爬取天气预报
  • 四.海量数据实时分析-Doris数据导入导出
  • 一. 从Hive开始
  • Linux下的PWM驱动
  • 日语输入法平假名和片假名切换
  • Oracle向量搜索及其应用场景
  • 【排序算法】六、快速排序补充:三指针+随机数法
  • PyTorch torch.cdist函数介绍及示例代码
  • CTK框架(四): 插件编写
  • 深入理解C代码中的条件编译
  • Ubuntu16.04操作系统-内核优化
  • Qt/C++编写的Onvif调试助手调试神器工具/支持云台控制/预置位设置等/有手机版本
  • 【原创】java+swing+mysql密码管理器系统设计与实现
  • JavaEE-HTTPHTTPS
  • iLogtail 开源两周年:社区使用调查报告
  • Ubuntu 比较两个文件夹
  • 两数之和--力扣1
  • vue原理分析(三)new()创建Vue实例
  • Spring MVC: 构建Web应用的强大框架
  • 网络学习-eNSP配置NAT
  • 动态规划-最长回文子串
  • 海康威视 嵌入式 面经 海康威视嵌入式软件 嵌入式硬件总结面试经验 面试题目汇总
  • 使用图论技巧——有遍数限制的最短路
  • flume 使用 exec 采集容器日志,转储磁盘
  • 459重复的子字符串
  • 【HarmonyOS NEXT】实现截图功能