Linux Socket套接字描述符详解

套接字又名socket,是一个接口,进程可以利用该接口和其他进程通信。无论是其他进程在本机上还是在其他机器上。

套接字接口有许多不同的网络协议。包括TCP/IP协议栈!

就如使用文件描述符来访问文件一样。

程序是用套接字描述符来访问套接字。

 

#include<sys/socket.h>

int socket(int domain,int type,int protocol) 接下来来详细介绍这三个参数

 

1.domain

就如写信一样,不同国家写信的地址写法不同,英国美国有从街-区-市的从小到大的地址写法!而中国的地址写法

是从大到小,市-区-街。就如不同域有着不同地址表示格式。

常见的域是:AF_INET(IPV4域),AF_INET6(IPV6域),AF_UNIX,AF_UPSPEC...

 

2.type

有SOCK_DGRAM 固定长度的 无连接的 不可靠的报文传递。两个进程不需要建立连接只需要向对方进程套接字发送一个报文。

(有点像写信,你发送信息就代表你写了很多信件。每封都有地址,接收人。)

有SOCK_STREAM 可靠的,有序的,双向的连接型字节流。

(有点像,你建了一条管道到别人家,建好以后你不用去送信,只需不断往管道里投字条。对方也可以往管道里投纸条到你家。)

有SOCK_SEQPACKET

(和SOCK_STREAM 类似只是从套接字得到的不是字节流而是基于报文的服务。)

有SOCK_RAM

(用于访问下面的网络层即IP层。构造自己的协议头部。)

 

3.protocol

这个参数通常是0,在前2个参数已经确认的情况下一般用来选择默认的协议。比如在AF_INET SOCK_STREAM的情况下默认选择TCP

在AF_INET SOCK_DGREAM 的情况下默认选择UDP!

 

就像一个文件描述符一样。可以用read函数 write函数对文件描述符进行操作。同理可以对套接字描述符进行操作。

但是并不是所有的文件描述符操作都适用于套接字描述符。最常用的对套接字描述符的操作是shutdown

#include<sys/socket.h>

int shutdown(int sockfd,int how)

如果how是SHUT_RD 表示关闭读端无法再从套接字里读取

如果how是SHUT_WR 表示关闭写段无法再往套接字里写

how是SHUT_RDWR 说明同时无法写和读!

可以关闭一个方向开启另一个方向,比如关闭了写端但是还可以继续读取!

 

转载于:https://www.cnblogs.com/zzzPark/p/6389188.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值