对Socket函数的理解

来源:互联网 发布:淘宝女装店知乎推荐 编辑:程序博客网 时间:2024/05/29 15:15

今天看到select()函数,对Socket_fd的操作,忽然生疑:Socket描述符到底是什么东西?这篇文章的解释给了我答案:

  1. socket函数  
  2. 功能:指定协议类型  
  3.   
  4. 定义:  
  5. #include <sys/types.h>  
  6. #include <sys/socket.h>  
  7. int socket(int family, int type, int protocol);  
  8.   
  9. 返回值  
  10.   
  11. 出错: -1  
  12. 成功: 套接口描述字 (socket file descriptor)(套接字)sockfd   
  13.   
  14. socket 函数指定了协议族(IPv4、IPv6或unix)和套接口类型(字节流、数据报或原  
  15.   
  16. 始套接口)。但并没有指定本地协议地址或远程协议地址。  
  17.   
  18. 理解socket  
  19.   
  20. socket使用 Unix 文件描述符 (file descriptor) 和其他程序通讯的方式。  
  21.   
  22. Unix 程序在执行任何形式的 I/O 的时候,程序是在读或者写一个文件描述符。  
  23.   
  24. 一个文件描述符只是一个和打开的文件相关联的整数。  
  25.   
  26. 这个文件可能是一个网络连接,FIFO,管道,终端,磁盘上的文件或者什么其他  
  27.   
  28. 的东西。Unix 中所有的东西是文件!因此,与 Internet 上别的程序通讯的时候,  
  29.   
  30. 要通过文件描述符。利用系统调用 socket()得到网络通讯的文件描述符。他返回  
  31.   
  32. 套接口描述符 (socket descriptor),然后再通过他来调用 send() 和 recv()。  
  33.   
  34. 那么为什么不用一般的调用 read() 和 write() 来通过套接口通讯?  
  35.   
  36. 简单的答案是:可以使用一般的函数!  
  37.   
  38. 详细的答案是:使用 send() 和 recv() 让你更好的控制数据传输。  
转自:http://blog.csdn.net/kjing/article/details/6962440

0 0
原创粉丝点击