我知道套接字在网络程序中被广泛使用,我可以用它编写代码。但我不明白一些事情:什么是套接字的定义,为什么需要它以及它是如何工作的?
1.为什么我们需要插座?
如果它被网络层用来区分应用层程序,为什么不使用appliation名称或其他uniqueue属性?
套接字是标准吗?
套接字只是在Linux或其他操作系统的结构?
2.套接字如何工作?
围绕套接字有很多功能,例如bind,accept,listen,send等。例如,send()通过TCP发送msg给dest,以及它如何发送msg给网络层?它发送消息到TCP缓冲区吗?网络层进程如何读取tcp缓冲区数据以及如何将数据发送到较低层进程?
如果我使用send(int sockfd, const void *buf, size_t len, int flags)
函数,第一个参数'sockfd'是一个未定义的套接字,比如随机int,结果会导致什么结果?为什么?什么是os进程?
这对SO来说太宽泛了。我建议你阅读“Unix网络编程”这本书,它很好地解释了它。 – Barmar
你为什么试图将所有关于套接字的问题都塞进这个问题?此外,这些问题并不表示出诚意的尝试,以便您首先回答自己的问题。 – jxh