TCP服务器的实现

TCP通信的实现过程

在这里插入图片描述

socket函数 与 通信域

#include <sys/types.h>
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
-domain: 指定通信域(通信地址族);
-type: 指定套接字类型;
-protocol: 指定协议;

套接字类型与协议

-type: 指定套接字类型
TCP唯一对应流式套接字,所以选择SOCK_STREAM(数据报套接字:SOCK_DGRAM)

-protocol: 指定协议
流式套接字唯一对应TCP,所以无需要指定协议,设为0即可

在这里插入图片描述

bind函数 与 通信结构体

int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
-sockfd:socket函数生成的套接字
-addr:通信结构体
-addrlen:通信结构体的长度

在这里插入图片描述

bind函数 与 通信结构体

IPv4地址族结构体
struct sockaddr_in {
	sa_family_t    sin_family; /* 地址族: AF_INET */
	in_port_t      sin_port;   /* 网络字节序的端口号 */
	struct in_addr sin_addr;   /*IP地址结构体 */
};
/* IP地址结构体 */
struct in_addr {
	uint32_t       s_addr;     /* 网络字节序的IP地址 */
};
通用地址族结构体
struct sockaddr {
	sa_family_t sa_family;
	char        sa_data[14];
}
示例:为套接字fd绑定通信结构体addr
addr.sin_family = AF_INET;
addr.sin_port = htons(5001);
addr.sin_addr.s_addr = 0;
bind(fd, (struct sockaddr *)&addr, sizeof(addr) );

listen函数 与 accept函数

/*监听套接字*/
int listen(int sockfd, int backlog);
/*处理客户端发起的连接,生成新的套接字*/
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
-sockfd: 函数socket生成的套接字
-addr:客户端的地址族信息
-addrlen:地址族结构体的长度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值