基于TCP的socket网络编程

socket

socket可以说是一种网络通信的函数接口,封装了传输层协议:TCP/UDP。
使用socket创建成功后,会得到文件描述符fd,fd操作的是一块内核缓冲区。

服务端编程

TCP的服务端编程可以总结为以下几个步骤:
1.创建通讯端socket,获取通讯描述符;

int socket(int domain,int type,int protocol);

2.将通讯描述符和服务器的ip地址和端口号绑定;

int bind(int sockfd,const struct sockaddr *addr,socklen_t addrlen);

3.监听通讯描述符;

int listen(int sockfd,int backlog);

4.阻塞等待客户端请求的到来,获取连接描述符;

int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen);

5.获取客户端的数据:使用read操作;
6.数据处理;
7.将处理后的数据发送给客户端:使用write操作;
8.关闭和客户端的连接:使用close操作。

客户端编程

TCP的客户端编程可以总结为如下:
1.使用socket创建通讯描述符;
2.使用connect连接服务器;

int connect(int sockfd,const sockaddr *addr,socklen_t addrlen);

3.使用write向服务器发送数据;
4.等待服务器的响应;
5.关闭和服务器的连接。

补充

网络字节序为大端,在网络上传输可能要将小端转换为大端,再将大端转换为小端。
有以下函数:
unit32_t htonl(uint32_t hostlong);
unit16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);

另外,可能会使用到INADDR_ANY,其含义是:让服务器端计算机上的所有网卡的ip地址都可以 作为服务器ip地址,也即监听外部客户端程序发送到服务器端所有网卡的网络请求。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值