此文章以记录个人学习tcp serve的点滴心得 了解C语言socket编程 能够独立编写tcp server代码 了解一定的tcp-server的细节
若能对读者有以上三个方面有所帮助,这将是我的荣幸 网络套接字所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口。简而言之,socket是网络上两个程序双向通讯连接的端点。 Linux最显著的特色——万物皆文件,在网络编程这里也体现得淋漓尽致。 既然万物皆文件,那么socket也可以理解为文件,针对Socket这个文件,可以使用打开(open)、读写(write、read)和关闭(close)来操作,自然会有对应的socket函数对其进行操作(可看最基本的网络套接字函数这一章) 最基本的网络套接字函数若对基本的套接字函数了解较多,可直接跳过这块 socket函数man 2 socket 依赖头文件函数原型int socket(int domain, int type, int protocol); 创建一个套接字 参数说明domain指定使用何种的地址类型 可供选择的参数:AF_INET【IPv4】、AF_INET6【IPv6】、AF-UNIX【UNIX本地域协议族】 这些AF_*都定义在 bits/socket.h头文件中 设置通信的协议类型 可供选择的参数:SOCK_STREAM、SOCK_DGRAM SOCK_STREAM - TCP SOCK_DGRAM - UDP 可添加的参数: SOCK_NONBLOCK【新创建的socket是非阻塞的】、SOCK_CLOEXEC【fork出的子进程关闭该socket】
|