来自:http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html
因此,当您想通过Internet与其他程序通信时 你会通过文件描述符来做到这一点,你最好相信它。
“我从哪里获得这个用于网络通信的文件描述符,先生。 Smarty-Pants?“可能是你现在心中的最后一个问题, 但我还是要回答它:你打电话给socket() 系统例程。它返回套接字描述符,然后进行通信 通过它使用专门的send()和recv()(man send,man recv)套接字调用。
“但是,嘿!”你可能正在大声说出来 现在。 “如果它是一个文件描述符,为什么以海王星的名义不能 只需使用正常的read()和write()调用即可进行通信 插座?“简短的回答是,”你可以!“答案越长, “你可以,但send()和recv()可以更好地控制你的 数据传输。“
因为,socket是UNIX中不同进程之间的通信方式,
和
UNIX中不同进程之间的所有通信都是通过读写文件来完成的
和
文件描述符是一个唯一表示操作系统中打开文件的整数。
那么,套接字描述符基本上是文件描述符吗? OR是套接字描述符,基本上是两个程序之间已建立链接的唯一标识吗?
两者有什么区别?
答案 0 :(得分:2)
这里有几个问题,但所有问题的答案都是一样的。在Unix,Linux等上,套接字描述符是文件描述符。那是为什么你可以使用read()和write()以及close()。
在Windows上,它不是,你不能。