网络编程套接字

23 篇文章 0 订阅

socket常用API

// 创建 socket 文件描述符 (TCP/UDP, 客户端 + 服务器)
int socket(int domain, int type, int protocol);
// 绑定端口号 (TCP/UDP, 服务器)      
int bind(int socket, const struct sockaddr *address, socklen_t address_len);
// 开始监听socket (TCP, 服务器)
int listen(int socket, int backlog);
// 接收请求 (TCP, 服务器)
int accept(int socket, struct sockaddr* address, socklen_t* address_len);
// 建立连接 (TCP, 客户端)
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

sockaddr结构

IPV4和IPV6的地址格式定义在netinet/in.h中,IPV4地址用sockaddr_in结构体表示,包括16位地址类型,16位端口号和32位IP地址

IPV4、IPV6的地址类型分别定义为常数AF_INET、AF_INET6.这样,只要取得某种sockaddr结构体的首地址,不需要知道具体是哪种类型的sockaddr结构体,就可以根据地址类型字段确定结构体中的内容

socket API可以都用struct sockaddr *类型表示,在使用的时候需要强制转换成sockaddr_in;这样的好处是程序的通用性,可以接收IPV4,IPV6,以及UNIX Domain Socket各种类型的sockaddr结构体指针作为参数

 

 基于udp协议的socket客户端与服务端通信编程

基于tcp协议的socket客户端与服务端通信编程

 tcp和udp的区别

tcp:有连接,可靠,面向字节流

udp:无连接,不可靠,面向数据报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值