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(此处代码稍后添加)


目录
相关文章
|
23天前
|
存储 安全 Linux
|
25天前
|
Linux Shell 数据安全/隐私保护
|
2月前
|
Linux 编译器 C语言
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
|
2月前
|
网络协议 Linux
linux学习之套接字通信
Linux中的套接字通信是网络编程的核心,允许多个进程通过网络交换数据。套接字提供跨网络通信能力,涵盖本地进程间通信及远程通信。主要基于TCP和UDP两种模型:TCP面向连接且可靠,适用于文件传输等高可靠性需求;UDP无连接且速度快,适合实时音视频通信等低延迟场景。通过创建、绑定、监听及读写操作,可以在Linux环境下轻松实现这两种通信模型。
39 1
|
2月前
|
网络协议 Linux 网络性能优化
Linux基础-socket详解、TCP/UDP
综上所述,Linux下的Socket编程是网络通信的重要组成部分,通过灵活运用TCP和UDP协议,开发者能够构建出满足不同需求的网络应用程序。掌握这些基础知识,是进行更复杂网络编程任务的基石。
127 1
|
2月前
|
Linux 开发工具
【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)
【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)
|
3月前
|
Linux 程序员 编译器
Linux内核驱动程序接口 【ChatGPT】
Linux内核驱动程序接口 【ChatGPT】
|
3月前
|
域名解析 负载均衡 网络协议
Linux网络接口配置不当所带来的影响
总而言之,Linux网络接口的恰当配置是保证网络稳定性、性能和安全性的基础。通过遵循最佳实践和定期维护,可以最大程度地减少配置错误带来的负面影响。
152 0
|
3月前
|
Linux 测试技术 API
Linux PWM接口概述 【ChatGPT】
Linux PWM接口概述 【ChatGPT】
|
3月前
|
Linux
使用qemu来学习Linux的休眠和唤醒
使用qemu来学习Linux的休眠和唤醒