在一个套接字上同时使用 receive() 和 send() 是否安全?

发布于 2024-09-11 02:59:35 字数 178 浏览 8 评论 0原文

我记得在某处读过,套接字可以被视为两个独立的半双工通道。这是否意味着同一个套接字的 recv()send() 实际上是不相关的?

  • 如果是这样,是根据定义还是 特定于实施?
  • 如果不是,两者如何相互干扰?

谢谢。

I remember having read somewhere that a socket can be regarded as two independent half-duplex channels. Does it mean that recv() and send() of the same socket are actually irrelevant?

  • if so, is it by definition or
    implementation-specific?
  • if not, how the two interfere with each other?

thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

把人绕傻吧 2024-09-18 02:59:35

我很好奇你认为它们会如何互相干扰。您认为您可能会收到您发送的信息吗?

I'm curious how you think they would interfere with each other. Are you thinking that you might receive what you sent?

忘羡 2024-09-18 02:59:35

如果是 SOCK_STREAM,您可以同时使用 send/recv。

前任 :
假设你有两个线程,一个负责发送数据
第二个负责接收数据,您可以执行以下

主要例程:
获取套接字 fd。
创建一个 POSIX 线程用于将缓冲区发送到此 fd。
创建一个 POSIX 线程来接收从此 fd 到达的数据。
连接到服务器。

线程 1 例程:
构造一个消息缓冲区;
将缓冲区发送到此 fd 中。

线程 2 例程:
从该 fd 接收数据。
处理日期。

In case of SOCK_STREAM, you can use send/recv concurrently.

Ex :
Suppose you have two threads, one is responsible for sending the data
and second one is responsible for receiving the data you can do following

main Routine :
get a socket fd.
create a POSIX thread for sending the buffer to this fd.
create a POSIX thread to receive the data arrived from this fd.
connect to a server.

Thread 1 Routine :
construct a message buffer;
send the buffer into this fd.

Thread 2 Routine :
recv data from this fd.
process the date.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文