socket客户端服务端编程实战

服务端步骤:

1.创建socket

int socket(int domain, int type, int protocol);
domain(连接协议):协议族,AF_INET/PF_INET(TCP、IPV4协议族);
type:服务类型,SOCK_STREAM(TCP流服务)/ SOCK_DGRAM(UDP数据报);
protocol:具体协议,一般设置为0,表示使用默认协议;

2、命名socket

int bind(int sockfd, const struct sockaddr my_addr, socklen_t addrlen);*
将my_addr所指的socket地址分配给未命名的sockfd文件描述符,addrlen参数指出该 socket地址的长度;
一般使用sockaddr_in替代sockaddr

	**注:这里要说到遍历查找,也就是在所有的头文件中寻找某个单词:*,例:grep “struct sockaddr_in {” *  -nir         (n表示递归查找,i表示显示行号,r表示不区分大小写)
	
	****附:inet_ntoa():将网络地址转换成“.”点隔的字符串格式。*
	* inet_aton(const char *string, struct in_addr*addr):将一个字符串IP地址转换为一个32位的网络序列IP地址。**

在这里插入图片描述

3、监听socket

int listen(int sockfd, int backlog);
backlog表示内核监听队列的最大长度(完全连接状态时socket的上限),典型值为5;
监听队列中完整连接的上限通常比backlog略大;

4、接收连接

int accept(int sockfd, struct sockaddr addr, socket_t addrlen);**
sockfd是执行过listen系统调用的监听sockfd;
addr获取被接受连接的远端socket地址;

客户端步骤:

1.创建socket

int socket(int domain, int type, int protocol);
domain:协议族,AF_INET/PF_INET(TCP、IPV4协议族);
type:服务类型,SOCK_STREAM(TCP流服务)/ SOCK_DGRAM(UDP数据报);
protocol:具体协议,一般设置为0,表示使用默认协议;

2、发起连接

int connect(int sockfd, const struct sockaddr serv_addr, socklen_t addrlen);*
sockfd是由系统调用返回一个socket;
serv_addr是服务器监听的socket地址;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值