码迷,mamicode.com
首页 > 其他好文 > 详细

套接字socket

时间:2020-04-03 18:31:09      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:指定   mic   驱动   努力   pac   介绍   mamicode   alt   主机   

基本概念

套接字(Socket)是一种介于应用层与传输层之间的抽象层,使用Socket可以将应用程序添加到网络中,并可以与处于同一个网络中的其他应用程序进行数据通信。

sockect一定要有IP地址跟端口号:

IP地址:在网络环境中唯一标识一台主机

端口号:在主机中唯一标识一个进程

IP地址+端口号:在网络环境中唯一标识一个进程()

套接字一定是成对出现:

技术图片

一个socket含有两个缓冲区,一个用于读入,一个用于写出,实现全双工。

技术图片

Socket类型

我们现在主要使用的是TCP/IP协议族,而TCP/IP协议族中的主要Socket类型为流套接字数据报套接字
流套接字
使用协议:使用TCP作为端对端的通信协议
特点:
1)面向连接;
2)每一条TCP连接只能是点对点的(一对一);
3)提供可靠交付的服务;
4)提供全双工通信;
5)面向字节流。
流套接字,就好像打电话,必须两端同时接通才能通话。
数据报套接字
使用协议:使用UDP作为端对端的通信协议
特点:
1)无连接;
2)尽最大努力交付;
3)面向报文;
4)无拥塞控制;
5)支持一对一、一对多、多对一和多对多的交互通信;
6)首部开销小(只有四个字段:源端口、目的端口、长度、检验和)。
数据报套接字,就好像寄信,我往外寄出去了,但是对方收没收到我不知道。

 

Socket工作流程

tcp

 技术图片

udp

 技术图片

 

socket函数

头文件:

#include <sys/socket.h>
函数原型

int socket(int domain, int type, int protocol);
作用:

创建套接字。

参数介绍:

参数domain:指定使用何种的地址类型。默认AF_INET。
eg:
AF_INET IPv4网络通信
AF_INET6 IPv6网络通信
AF_PACKET 链路层通信
AF_UNIX, AF_LOCAL 本地通信

参数type:套接字类型。默认SOCK_STREAM。
eg:
1、SOCK_STREAM 提供双向连续且可信赖的数据流, 即TCP. 支持 OOB 机制, 在所有数据传送前必须使用connect()来建立连线状态
2、SOCK_DGRAM 使用不连续不可信赖的数据包连接,基于UDP
3、SOCK_SEQPACKET 提供连续可信赖的数据包连接
4、SOCK_RAW 提供原始网络协议存取
5、SOCK_RDM 提供可信赖的数据包连接
6、SOCK_PACKET 提供和网络驱动程序直接通信. protocol 用来指定 socket 所使用的传输协议编号, 通常此参考不用管它, 设为0 即 可

参数protocol:协议号。可设置为0,表示选择当前family和type组合下 protocol的系统默认值
eg:
IPPROTO_TCP IPPTOTO_UDP IPPROTO_SCTP IPPROTO_TIPCTCP
TCP传输协议 UDP传输协议 STCP传输协议 TIPC传输协议

套接字socket

标签:指定   mic   驱动   努力   pac   介绍   mamicode   alt   主机   

原文地址:https://www.cnblogs.com/yxbl/p/12627794.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!