Linux Socket学习--为套接口绑定地址

简介:

  当我们使用socket函数创建一个套接口之后,这个套接口就处于无名状态,虽然之前我们提到即使没有地址,套接口也能使用,但是这个只限于套接口对在同一个Linux内核中,如果位于两台不同的主机的套接口需要连接,而又没有地址,那么就无法工作。

   函数bind的作用就是为无名套接口分配地址,语法如下:

#include <sys/types.h>
#include <sys/socket.h>
int bind(int sockfd, struct sockaddr* my_addr, int addrlen);

函数调用成功返回0,否则返回-1,我们可以通过查看errno的值来了解错误原因。

   但是需要注意的是提供给bind函数的套接口当前必须处于无名状态(也就是没有地址),如果我们使用bind函数为一个已经有地址的套接口绑定另外一个地址的话,会出现错误。

下面的例子展示了如何使用bind函数。

 ----UNDONE(此处代码稍后添加)

下面我们来看看geisockname()函数。

#include <sys/socket.h>
int getsockname(int s, struct sockaddr* name, socklen_t* namelen);

其中s表示我们想要知道地址的那个套接口,name指向接受缓冲区的指针,namelen是指向最大长度的指针变量。这个变量给出了接受缓冲区所能够接受的最大字节数,当接收缓冲区被写入之后,这个值就会被更新为实际写入的字节数。

函数调用成功返回0,否则返回-1、

下面的代码展示了getsockname函数的使用:

----UNDONE(此处代码稍后添加)

我们在之前了解了使用函数getsockname()可以获得套接口本地协议地址的作用,但是有时候我们不但需要确定套接口的本地协议地址,还需要确定与本地套接口相连接的远程套接口的协议地址,这个时候我们就可以使用函数getpeername():

#include <sys/socket.h>
int getpeername(int s, struct sockaddr*name, socklen_t* namelen);

函数调用成功返回0,失败返回-1、

下面的例子展示了一下getpeername函数的使用方法:

----UNDONE(此处代码稍后添加) 
绑定一个特定的接口地址:

为了给通信指定一个特定的接口,我们需要:

1)用socket函数生成一个套接口

2)使用函数bind将想要接受连接的接口的IP地址绑定到本地套接口。

下面的例子展示了怎么绑定一个特定的网络套接口地址:

----UNDONE(此处代码稍后添加)

绑定统配接口

1)使用socket函数生成套接口,2)使用bind函数将IP地址INADDR_ANY绑定到本地套接口。下面的代码展示了这一操作:

----UNDONE(此处代码稍后添加)


目录
相关文章
|
1月前
|
域名解析 网络协议 Linux
【Shell 命令集合 网络通讯 】Linux 设置和管理网络接口配置信息 netconfig命令 使用指南
【Shell 命令集合 网络通讯 】Linux 设置和管理网络接口配置信息 netconfig命令 使用指南
55 1
|
12天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
37 6
|
15天前
|
网络协议 Linux
在Linux中,管理和配置网络接口
在Linux中管理网络接口涉及多个命令,如`ifconfig`(在新版本中被`ip`取代)、`ip`(用于网络设备配置)、`nmcli`(NetworkManager的CLI工具)、`nmtui`(文本界面配置)、`route/ip route`(处理路由表)、`netstat/ss`(显示网络状态)和`hostnamectl/systemctl`(主机名和服务管理)。这些命令帮助用户启动接口、设置IP地址、查看连接和路由信息。不同发行版可能有差异,建议参考相应文档。
19 4
|
1月前
|
监控 网络协议 Linux
【Shell 命令集合 网络通讯 】Linux 显示网络 连接、路由表和网络接口信息 netstat命令 使用指南
【Shell 命令集合 网络通讯 】Linux 显示网络 连接、路由表和网络接口信息 netstat命令 使用指南
61 1
|
1天前
|
消息中间件 Unix Linux
Linux的学习之路:17、进程间通信(1)
Linux的学习之路:17、进程间通信(1)
14 1
|
1天前
|
存储 安全 Linux
Linux的学习之路:9、冯诺依曼与进程(1)
Linux的学习之路:9、冯诺依曼与进程(1)
15 0
|
2天前
|
Ubuntu 网络协议 Linux
Linux(20) Ubuntu 20.04 网络接口自动切换路由配置
Linux(20) Ubuntu 20.04 网络接口自动切换路由配置
20 0
|
2天前
|
Unix Linux Windows
Linux的学习之路:3、基础指令(2)
Linux的学习之路:3、基础指令(2)
22 0
|
8天前
|
网络协议 Ubuntu Unix
Linux 下使用 socket 实现 TCP 客户端
Linux 下使用 socket 实现 TCP 客户端
|
16天前
|
Linux 应用服务中间件 网络安全
小白学习Linux的学习建议和阶段
【4月更文挑战第5天】小白学习Linux的学习建议和阶段
45 0