TCP、UDP有关函数

首先看一下上一篇三次握手四次挥手文章中提到的原理图。
其中的read对应的就是recv函数,write对应的就是send函数。
TCP原理图及函数
步入正题,函数的使用:


1.TCP客户端


socket : 创建套接字

函数原型:int socket(int family,int type,int protocol);
功能:创建一个用于网络通信的socket套接字(描述符)
参数:
	@family  :  协议族(AF_INET、AF_INET6、PF_PACKET)
	@type    :  套接字类(SOCK_STREAM、SOCK_DGRAM、SOCK_RAW)
	@protocol:  协议类别(0、IPPROTO_TCP、IPPROTO_UDP)(一般传0,自动匹配)
返回值:套接字
特点:创建套接字时,系统不会分配端口。
	创建的套接字默认属性是主动的,即主动发起服务的请求;
	当作为服务器时,往往需要修改为被动的。(listen)
头文件:  
	#include <sys/socket.h>

connect : 连接“服务器”

函数原型:
	int connect(int sockfd,const struct sockaddr *addr,socklen_t len);
功能:主动跟服务器建立链接
参数:
	@sockfd   :   socket 套接字
	@addr     :   连接的服务器地址结构
	@len      :   地址结构体长度
返回值:
	成功  :  0   失败  :  其他
注意:
	connect 建立连接之后不会产生新的套接字;
	连接成功后才可以开始传输 TCP 数据。
头文件:
	#include <sys/socket.h>

send : 发送数据到“服务器”

函数原型:
	ssize_t send(int sockfd, const void* buf,size_t nbytes, int flags);
功能:用于发送数据
参数:
	@sockfd   :    已建立连接的套接字
	@buf      :    发送数据的地址
	@nbytes   :    发送缓数据的大小(以字节为单位)
	@flags    :    套接字标志(常为0)
返回值:成功发送的字节数
注意:
	不能用发送 0 长度的数据包,这是与sendto的差别。
头文件:
	#include <sys/socket.h>

recv : 接受“服务器”的响应

函数原型:
	ssize_t recv(int sockfd, void *buf, size_t nbytes, int flags);
功能:用于接收网络数据
参数:
	@sockfd    :    套接字
	@buf       :    接收网络数据的缓冲区的地址
	@nbytes    
  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值