套接字

套接字是应用层和运输层的接口,是应用程序和底层网络通信的通信端口。从网络读数据,写数据到网络中,控制网络协议,都是通过套接字。

创建套接字:

#include <sys/socket.h>
socket(int domain, int type, int protocol) //在通信域domain中创建了一个类型为type,使用协议为protocol的套接字,并返回一个描述字。

说明:

domain: 通信域,就是你希望创建的套接字在哪里用,不同的通信域有不同的网络协议族,有不同的地址结构。允许的通信域有:AF_UNIX(同一台计算机上两个进程通过文件系统通信);AF_INET(网络通信,IPv4地址);AF_INET6(网络通信,IPv6地址)。


type: 套接字类型。主要有三种:SOCK_STREAM,SOCK_DGRAM;SOCK_RAW。 SOCK_STREAM是字节流套接字,他提供的是面向连接的,双向的,可靠的,顺序的,不重复的字节流。也就是你从这边传的什么顺序,在远程收到的就是什么顺序。它之所以能提供这样的服务是因为在底层使用了TCP协议。 SOCK_DGRAM是数据报套接字,它使用的是用户数据报协议UDP,所以不保证数据报是顺序的可靠的和不重复的。 还有一种SOCK_RAW套接字,主要用于访问更低层次的网络层,测试和开发网络协议用的。


protocol: 使用什么协议。由上面两个参数可以知道,一般定义了domain和type之后,协议就定下来了,所以这个参数可以设为0,就是让系统选择默认协议。但是如果domain和type的组合能有多种协议可以选择,那么这时候这个参数就要写具体使用哪种协议。通信双方的套接字必须使用相同的协议!


关闭套接字:

#include <unistd.h>
int close(int socket);

有时候不需要关闭套接字,只需要断开连接:

#include <sys/socket.h>
int shutdown(int socket, int how);
这个函数可以全部断开,也可以部分断开,取决于how的取值:

SHUT_RD: 停止接受数据

SHUT_WR: 停止发送数据,忽略等待传送的数据

SHUT_RDWR: 停止从该套接字接收和发送数据。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值