TCP/IP网络编程笔记Chapter I -2理解网络编程与套接字
1.网络编程与套接字
网络编程就是编写程序使两台联网的计算机相互交换数据,套接字是网络数据传输用的软件设备,是用来连接该网络的工具。
2.流程
套接字大致分为两种,我们把TCP套接字比做电话机,电话机可以同时拨打和接听,我们先讨论接听的套接字创建部分。
(1)服务端–接电话套接字
socket函数
首先我们需要一部电话机,下面的函数相当于电话机的套接字
#include<sys/socket.h>
int socket(int domin,int type,int protocol);
- 成功返回文件描述符,失败返回-1
bind函数
准备好电话机后,还需要分配电话号码,才能与别人联系上
#include<sys/socket.h>
int bind(int sockfd,struct sockaddr,socklen_t addrlen);
- 成功返回0,失败返回-1
listen函数
完成接电话的准备工作后,我们需要连接电话线,使电话机转为可接受状态,listen函数把套接字转化为可接收转态
#include<sys/socket.h>
int listen(int sockfd,int backlog);
- 成功返回0,失败返回-1
accept函数
连接好电话线后,如果有人拨打电话需要拿起话筒才能接听。拿起话筒相当于接受请求用accept函数受理
#include<sys/socket.h>
int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen);
- 成功返回文件描述符,失败返回-1
整理
- 1.调用socket函数创建套接字
- 2.调用bind函数分配IP地址和端口号
- 3.调用listen函数转为可接受请求状态
- 4.调用accept函数受理连接请求
(2)客户端–打电话套接字
客户端套接字创建过程比服务端简单,只有三个部分,其一是调用socket函数创建套接字,同上;其二是调用connect函数;其三是与服务端共同运行以收发数据。
connect函数
connect函数充当打电话(请求连接)的函数
#include<sys/socket.h>
int connect(int sockfd,struct sockaddr* serv_addr,socklen_t addrlen);
- 成功返回0,失败返回-1
2.服务端与客户端的调用顺序
服务端
客户端