sendto函数返回-1_基本socket函数的解读--Berkeley socket的重点的翻译

看了unix网络编程是否有点感觉到它讲API讲的很杂,更像一本字典而不是一个可以快速学习的书。这里总结了基础的socket API并附带一些例子应该能帮助你更快的学习。

GitHub:helintongh/Web-Server

欢迎点赞

什么是socket?

  • 套接字是网络通信路径的本地端点的抽象表示(句柄)。Berkeley sockets API将其表示为Unix中的一个文件描述符(文件句柄),它为数据流的输入和输出提供了一个公共接口。
  • 简单来说:它们是利用标准 UNIX file descriptors(文件描述符)与其它程序沟通的一种方式。

BSD和POSIX套接字有差别的API

d5006074e7d5dce0ffd6658bea29cd03.png

所含头文件

7dd3fcd19114eecc1f6aa30762e1f439.png

套接字函数总结

aaf9e017f5a53933a729a23389d53f0d.png

套接字API通常提供以下功能:

  1. socket()函数创建一个特定类型的套接字(由整数编号标识),并将系统资源分配给它。 -
  2. bind()通常用于服务器端,并将套接字与套接字地址结构相关联,即指定的本地IP地址和端口号。
  3. listen()在服务器端使用,并让绑定的TCP套接字进入监听状态。
  4. connect()在客户端使用,并将空闲的本地端口号分配给套接字。对于TCP套接字,它会尝试建立新的TCP连接。
  5. accept()在服务器端使用。它接收从远程客户机创建的新TCP连接的接收传入请求,并创建与此连接的套接字地址相关联的新套接字。
  6. send(),recv(),sendto()以及recvfrom()用于发送和接收数据。还可以使用标准函数write()和read()。
  7. close() 使系统释放分配给套接字的资源。对于TCP而言作用是终止连接。
  8. gethostbyname()和gethostbyaddr() 于解析主机名和地址。仅支持IPv4。
  9. select()用于挂起程序,等待套接字列表中的一个或多个套接字去准备读/写或出现错误而继续挂起。
  10. poll() 用于检查套接字中的套接字的状态。这个函数可以测试套接字集合,看看是否有套接字可以写入/读取或是否发生错误。
  11. getsockopt() 用于检索指定套接字的特定套接字选项的当前值。
  12. setsockopt() 用于为指定的套接字设置特定套接字选项。

socket

#include <sys/socket.h>
int socket(int family, int type, int protocol);

函数socket()创建用于通信的端点,并返回套接字的文件描述符。它使用了三个参数:

family指定所创建套接字的协议族。例如:

  • AF_INET用于网络协议IPv4(仅IPv4)
  • AF_INET6对于IPv6(在某些情况下,向后兼容IPv4)
  • AF_UNIX用于本地套接字(使用文件)

type

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值