套接字基本归类

一、socked
int socket(int domain,int type,int protocol);
  用来创建一个套接字,完成本地进程间或者网络通信。
返回值:文件描述符或-1(出错)
参数:
1.通信域:
AF_LOCAL/AF_UNIX: 本地通信域,进程间通信
AF_INET: ipv4的网络通信域
AF_INET6: ipv6的网络通信域
2.通信类型:
SOCK_STREAM: tcp协议需要的参数。
SOCK_DGRAM: udp协议需要指定的参数。
SOCK_RAW: 原始套接字,可以直接操作没有经过内核拆包的数据帧。
3.需要的协议:
一般不用指定,固定为0
二、bind
int bind(int sockfd,struct sockaddr *my_addr,int addrlen)
将一个套接字和地址(IP+PORT)绑定。
返回值:成功0, 失败-1
参数:
1.socket返回的文件描述符
2.通用地址结构体指针。
3.结构体大小。

专门用在网络通信中的地址结构体:
struct sockaddr_in {
unsigned short sin_family;
unsigned short sin_port;
struct in_addr {
unsigned int s_addr;
}sin_addr;
unsigned char sin_zero[8];
};
三、listen
int listen(int sockfd,int backlog)
用来监听链接,完成Listen()调用后,socket 变成了监听socket(listening socket)
返回值:成功 0 ,失败 1
参数:
sockfd:监听链接的套接字
backlog:指定了正在等待链接的队列最大长度
四、accept
int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen)
接受链接请求并生成新的套接字
返回值:已建立好的链接的套接字或失败返回-1
参数:
sockfd :监听套接字
addr:对方地址
addrlen:地址长度
五、connect
int connect(int sockfd ,struck sockaddr *serv_addr,int addrlen);
客户端通过系统调用向服务器发送的链接请求
返回值:成功0,失败-1
参数:
sockfd:socket返回的描述符
serv_addr:服务器端的地址信息
addrlen:地址的长度
六、send/recv
ssize_t send/recv(int sockfd,const void *buffer,size_t length,int flags)

发送/接受信息
返回值:成功 实际发送/接受的字节数,失败 -1
参数:buffer:发送/接受缓冲区首地址
length:发送/接受的字节数
flags:发送/接受方式(通常为0堵塞)
七、sendto/recvfrome
ssize_t sendto(int sockfd,void *message,size_t length,int flags,struct sockaddr *dest_addr,socklen_t dest_len)
这两个函数在使用UDP时代替send/recv
参数:
参数:message:发送/接受缓冲区首地址
length:发送/接受的字节数
flags:发送/接受方式(通常为0堵塞)
dest_addr发送或接受方的地址
dest_len发送或接受方的地址长度
八、close
int close(int sockfd)
关闭套接字
九、
setsockopt: 设定网络套接字的属性。
参数:
1.sockfd
2.level:
套接字:SOL_SOCKET
传输层:IPPROTO_UDP | IPPROTO_TCP  
网络层:IPPROTO_IP
3.optname:
具体根据level 查看相应的man手册.
4.optval:
操作值,类型大部分是int, 真为使能,假为禁止。
具体参照相应的optname, 参看man 手册。
5.optlen
操作值的大小。
返回值:成功 0, 失败 -1, 并会设置errno。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值