TCP(传输控制协议)
TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。
嵌套字
套接字是通信的基石,是支持TCP/IP协议的路通信的基本操作单元。可以将套接字看作不同主机间的进程进行双间通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。套接字通常和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序),各种进程使用这个相同的域互相之间用Internet协议簇来进行通信。
相关函数
1.socket
函数原型
int socket(int domain, int type,int protocol)
参数
domain 网络程序所在的主机采用的通讯协议族
type 网络程序所采用的通讯协议
2.bind
函数原型
int bind(int sockfd, struct sockaddr *my_addr, int addrlen)
参数
sockfd 由socket调用返回的文件描述符
addrlen sockaddr结构的长度
my_addr 一个指向sockaddr的指针. 在中有 sockaddr的定义
不过由于系统的兼容性,我们一般不用这个头文件,而使用另外一个结构(struct sockaddr_in) 来代替.在中有sockaddr_in的定义
sockaddr_in{ unsigned short sin_family; unsigned short int sin_port; struct in_addr sin_addr; unsigned char sin_zero[8]; }
3.listen
函数原型
int listen(int sockfd,int backlog)
参数
sockfd 由scoket调用返回的文件描述符
addr/addrlen 设置请求排队的最大长度,当有多个客户端程序和服务端相连时,使用这个表示可以介绍的排队长度
4.accept
函数原型
int accept(int sockfd, struct sockaddr *addr,int *addrlen)
参数
sockfd socket返回的文件描述符
addr/addrlen 是用来给客户端的程序填写的,服务器端只要传递指针就可以了
5.connect
函数原型
int connect(int sockfd, struct sockaddr * serv_addr,int addrlen)
参数
sockfd socket返回的文件描述符
serv_addr 储存了服务器端的连接信息.其中sin_add是服务端的地址
addrlen serv_addr的长度
编译并在ubuntu下运行
编译
gcc -o server-while-tcp.out server-while-tcp.c
gcc -o client.out client.c
运行
./server-while-tcp.out //服务端输入
./client.out 服务器地址 //客户端输入