socket函数详解 (有了新的认识)
发布日期:2021-07-28 20:33:35 浏览次数:3 分类:技术文章

本文共 740 字,大约阅读时间需要 2 分钟。

       我们先来看一下socket函数的原型:

SOCKET PASCAL FAR socket (int af, int type, int protocol);

      典型的调用方式为:

 unsigned int sockSrv = socket(AF_INET, SOCK_STREAM, 0);

     

      1.af是address family的缩写,实际上就是指明域domain, 这个af主要是用来区分是创建ipv4的套接字还是ipv6的套接字。   当然, 顺便说一下, 如果是在unix中, 第一个参数还可以是AF_UNIX, 表示这个socket既不是ipv4的socket, 也不是ipv6的socket, 而是非网络形式的unix域socket, 可以用来进行非网络形式的进程间通信。 在很多嵌入式系统中, 进程间的通信均是通过非网络形式的unix域套接字来完成的。不过, 我们要明白, unix域套接字的客户端和服务端进行通信时, 客户端和服务端必须位于同一台机器上, 而且效率比网络套接字更高。

     2. 我以前总是以为, 这个type值决定了是tcp套接字还是udp套接字, 其实不是的。 type值决定的是流套接字还是数据报套接字或者其他。 注意流套接字不一定是tcp, 数据报套接字也不一定是udp.

     3. protocol这个值通常为0, 为0的时候是什么意思呢? 意思是, 如果type是流套接字, 且protocol为0, 那么就是就是默认的流套接字---tcp套接字。 同理, 如果type是数据报套接字, 且protocol为0, 那么就是默认的数据报套接字---udp套接字。

      返回值其实就是一个无符号整形,用于标识和索引套接字。可以通过返回值判断套接字是否创建成功。

转载地址:https://blog.csdn.net/stpeace/article/details/13279785 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:SOCKADDR_IN结构体的作用是:定义“地方”,宣誓主权
下一篇:WSAStartup函数的用途

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月01日 13时10分53秒