socket()和bind()的行为如何
how socket() and bind() behave?
我对C++套接字编程有一些问题。如果我要求的方式是错误的,请帮助深入挖掘,并帮助纠正。
- 在操作系统级别中,每个端口是否有一个文件描述符
- 多个端口如何使用同一网络接口?它像切换一样吗处理器中的线程?所以,如果使用端口的数量增加特定端口的延迟数据
- 创建套接字时,操作系统级别会发生什么?is是否创建了对IO文件描述符的引用
- 然后在操作系统级别调用bind()时会发生什么。它是如何互连套接字和NIC地址的
- 使用可重复使用的套接字时会发生什么?多个套接字如何绑定到一个端口?那些在一个端口上切换的像线程吗
- 在没有bind()的情况下发送或接收到特定地址或端口时?逻辑操作系统选择地址和端口的方式和内容
你很难找到比套接字的"圣经"W Richard Stevens:Unix网络编程更具影响力的网络编程文本。套接字编程不是一蹴而就的事情,所以不要指望它会发生。它是一门简单明了的学科。而且,就像所有学科一样,它需要磨练。
操作系统级别中每个端口是否有一个文件描述符。
否。如果您是一个在侦听套接字上接受连接的服务器,则可能有10000个文件描述符,所有描述符都引用相同的本地端口号。
多个端口如何使用同一网络接口?它像处理器中的线程一样切换吗?所以,如果使用端口的数量增加,是否会延迟特定端口的数据?
太复杂,无法在此处回答。
创建套接字时,操作系统级别会发生什么?is是否创建了对IO文件描述符的引用?
它们是非常相似的东西,在某些操作系统中它们甚至是相同的东西。一个是套接字,另一个是打开的文件。
然后在操作系统级别调用bind()时会发生什么。
将端口和IP地址分配给套接字。IP地址可以是0.0.0.0。如果指定的端口为零,系统将从空闲端口中为您选择一个。
它如何互连套接字和NIC地址?
请参阅上文。
使用可重复使用的套接字时会发生什么?
没有所谓的"可重用套接字"。您是在谈论重用端口吗
在不带bind()的情况下发送或接收到特定地址或端口时?逻辑操作系统如何以及什么是选择地址和端口。
如果您自己还没有执行bind()
,则会在幕后执行它。因此,与上述相同的规则适用于bind()
。
我认为你应该阅读套接字编程,你所问的是基本概念,你应该理解服务器、客户端、TCP、UDP、本地主机、远程主机等术语。socket()在进程和传输层之间创建一个接口,它创建并告诉套接字的特性。bind()将套接字绑定到本地地址。你可以查看手册第1页或第2页,你会发现一个全面的答案。
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- C/C++:socket() 创建在循环中失败,打开的文件太多
- boost::bind()类似的东西,但用于函数调用
- 使用 std::应用于 std::bind
- 不将数据 socket.io c++(客户端)发送到 nodejs(服务器)socket.io
- PCL:当我在setConditionFunction中使用std::bind 时,没有合适的转换函数
- std::bind on statd::array 的运算符 []
- std::bind c++ in if statement
- 通过 Tor 服务C++ socket.io 客户端
- std::bind 是否实现了 std::ref 和 std::cref 来消除函数调用的歧义?
- C++ 事件管理器的回调,使用 std::function 和 std:bind 以及派生类作为参数
- 试图克服 std::bind 编译错误
- c++ std::bind within function
- std::bind to void* to std::function
- 将 std::bind 应用于带有参数 <boost::asio::ip::tcp::socket> 时出错?
- socket.io client std :: bind-错误C2338:元组索引限制
- socket()和bind()的行为如何
- 调用socket::connect, socket::bind, socket::listen而不使用getaddrin
- 如何区分sys/socket.h中的bind()和std::bind
- Socket.IO CPP客户端示例(std::bind的用法)