基于流式套接字Socket的C/S通信设计(一)

本文介绍了如何使用C++在Linux环境下实现基于流式套接字Socket的C/S通信,包括服务端和客户端的设计。重点讲解了socket、bind、listen、connect、accept、recv、write和close等关键函数的功能和作用,以实现简单的网络通信及登录功能。
摘要由CSDN通过智能技术生成

一、基本目标

        实现简单通信。读取配置文件以连接服务器并实现简单登录功能。

二、流程实现

三、详细设计

服务端

        常用Socket函数详解

 1、socket()

       实现网络进程通信,在Linux/Unix“一切皆文件”的思想中实现“open、write/read、close”模式。可将其视作一种特殊的文件。

int sock_fd = socket(AF_INET, SOCK_STREAM, 0);    //AF_INET:IPV4;    SOCK_STREAM:TCP

2、bind()

        当socket函数返回一个描述符时,只是存在于其协议族的空间中,并没有分配一个具体的协议地址(这里指IPv4/IPv6和端口号的组合),bind函数可以将一组固定的地址绑定到sockfd上。


struct sockaddr_in server_addr;    //服务器地址
memset(&server_addr, 0, sizeof(struct sockaddr_in));    //初始化
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);    //INADDR_ANY:This machine all IP
bind(sock_fd, (struct sockaddr*)(&server_addr), sizeof(struct sockaddr));


3、listen()

        当socket函数创建一个套接字时,它被假设为一个主动套接字,也就是说,它是一个将调用connect连接的客户套接字。listen函数把一个未连接的套接字转换成一个被动套接字,指示内核应该接受指向该套接字的连接请求。如下图所示,调用listen导致套接字从CLOSED状态转换到LISTEN状态。
————————————————
版权声明:本文为CSDN博主「godop」的原创文章,遵循CC 4.0 BY-SA版权协议。
原文链接:https://blog.csdn.net/godop/article/details/79894079

listen(sock_fd, BACKLOG);

4、connect()

        通过此函数建立于TCP服务器的连接,实际是发起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LeoMove

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值