网络编程(1)--socket/bind/listen/accept的简单介绍

网络编程1--socket/bind/listen/accept的简单介绍

背景介绍

最近在学习APUE和Linux高性能服务编程,记录下自己的学习感悟

网络编程接口

个人理解, 网络编程接口的关键在于对文件的操作; 在Linux中,网络抽象套接字抽象成文件,网络间通信可以看作两台或者多台主机间 文件的交互。

socket

#include<sys/types.h>
#include<sys/socket.h>
int socket(int domain, int type, int protocol)

socket创建一个套接字(相当于open一个文件);
domain 表示系统所选择的协议簇
type 表示服务的类型(流服务,数据服务)
protocol 一个具体的协议

bind

网络编程中,用ip:port表示一个服务,映射到Linux网络编程中,便是用

struct sockaddr {
	sa_family_t sa_family;
	char sa_data[14]	
}

个人参照计算机网络自顶向下这本书,将一台服务器上的服务理解成一幢🏠,而socket创建的套接字 可以理解成给这个房子安装一扇门,如若没有门,封闭的房子便就是一个黑盒子了,进不去出不来,只能成为一个观赏品,无其他作用了。

为了给🏠装上这扇门,便需要调用bind接口,其实现

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

上述中, my_addr 表示一个服务, fd表示一扇门, 将这扇门装在my_addr🏠上便是bind完成的工作。

listen

当我们给🏠装好门以后, 该房子就可以允许进出了。现在假设你是这个🏠的主人,当别人想要访问你的时候,一下子会到达很多人,而你一次可能只能见一个,此时这些人就在门外等待,而你也需要统计有多人在排队, 这个统计便是listen的工作(可能比喻不恰当, 银行排队是不是更好?)

#include <sys/types.h>
#include <sys/socket.h>
int listen(int fd, int backlog);

fd便是门, backlog便是你想见的人数,纵使人多于backlog你也不打算见了。

accept

accept功能 便是相当于你给拜访者分配一个专员

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qls315

感觉好可打赏几毛钱增强更新动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值