TCP套接字编程

来源:互联网 发布:淘宝一次性口罩卫生吗 编辑:程序博客网 时间:2024/05/14 07:31

网络编程又称为套接字编程,为了与远程计算机进行数据传输,需要连接到因特网,而编程中的“套接字”就是用来连接该网络的工具。它本身具有连接的含义,还可以表示为两台计算机之间的网络连接。


网络编程中接受连接请求的套接字创建过程如下:
1.调用socket函数创建套接字
2.调用bind函数分配IP地址和端口号
3.调用listen函数转为可接收请求状态

4.调用accept函数受理连接请求


基于TCP的服务端、客户端

TCP服务器端默认函数调用顺序:

                 socket()            创建套接字
                 bind()               分配套接字地址
                 listen()              等待连接请求状态
                 accept()           允许连接
                 reac()/write()    数据交换

                 close()              断开连接

TCP客户端默认函数调用顺序:

                 socket()            创建套接字

                 connect()          请求连接

                 read()/write()     交换数据

                 close()               断开连接

1)、创建套接字
#include<sys/socket.h>int socket(int domain,int type,int protocol);
domain:  套接字中使用的协议族信息
type:    套接字数据传输类型信息
protocol:计算机通信中使用的协议信息

2)、分配套接字的IP地址和端口号
#include<sys/socket.h>int bind(int sockfd,struct sockaddr *myaddr,socklen_t addrlen);
sockfd:要分配地址信息(IP地址和端口号)的套接字文件描述符
myaddr:存有地址信息的结构体变量地址值
addrlen:第二个结构体变量的长度

3)进入等待连接请求状态

#include<sys/socket.h>int listen(int sock,int backlog);
sock:  希望进入等待连接请求状态的套接字文件描述符,传递的描述符套接字参数称为服务器端套接字(监听)
backlog:连接请求队列的长度,若为5,则队列长度为5
服务端处于等待连接请求状态是指,客户端请求连接时,受理连接前一直使请求处于等待状态。

4)受理客户端连接请求
#include<sys/socket.h>int accept(int sock,struct sockaddr *addr,socklen_t *addrlen);
sock   服务器套接字的文件描述符  
addr   保存发起连接请求的客户端地址信息的变量地址值,调用函数后向传递来的地址变量参数填充客户端地址信息
addrlen 第二个参数addr结构体的长度,但是存有长度的变量地址。

5)客户端进行连接
#include<sys/socket.h>int connect(int sock,struct sockaddr *servaddr,socklen_t addrlen);
sock:  客户端套接字文件描述符
serveraddr:  保存目标服务器地址信息的变量地址值

addrlen  以字节为单位传递已传递给第二个结构体参数servaddr的地址变量长度


原创粉丝点击