socket编程
在 UNIX/Linux 系统中不同的硬件设备都被看成一个文件。对硬件的操作,等同于对磁盘上普通文件的操作。
一切都是文件!
为了表示和区分已经打开的文件,UNIX/Linux 会给每个文件分配一个 ID,这个 ID 就是一个整数,被称为文件描述符(File Descriptor)。例如:通常用 0 来表示标准输入文件(stdin),它对应的硬件设备就是键盘;通常用 1 来表示标准输出文件(stdout),它对应的硬件设备就是显示器。
UNIX/Linux 程序在执行任何形式的 I/O 操作时,都是在读取或者写入一个文件描述符。一个文件描述符只是一个和打开的文件相关联的整数,它的背后可能是一个硬盘上的普通文件、FIFO、管道、终端、键盘、显示器,甚至是一个网络连接。
网络连接也是一个文件,它也有文件描述符。
Socket是提供网络服务的库,socket本意为“插座”,插在插座上,就能获得数据。socket就是计算机用来获得网络数据的工具。
socket在计算机领域翻译为“套接字”。
Socket 是“程序可用的通信端点”,TCP / UDP 是两种最常用的传输方式。
socket 基本分类
socket 创建时指定的东西
socket(domain, type, protocol);TCP 流式套接字。SOCK_STREAM ,可靠,双向,通讯流。
先建立连接
数据保证送达
顺序保证
像一条“管道”
UDP 数据报套接字。SOCK_DGRAM 无连接的套接字,快速传输但无序、传输的数据可能丢失也可能损坏,限制每次传输的数据大小、数据的发送和接收是同步的。
一条连接由 4 个东西决定
写一个 tcp 通信的程序
最后更新于