【问题标题】:How do one distinguish different connections from the same machine to a socket, from eachother如何区分从同一台机器到套接字的不同连接,彼此
【发布时间】:2021-11-12 09:50:18
【问题描述】:

这是用 C# 编写的

想象一下这个场景。

我有一个在计算机上运行的套接字服务器服务。同一台计算机上的许多其他进程将创建连接并向该服务器发送请求。

我想在字典中收集这些请求,并通过互联网将它们发送到 API,因为我不想一次发送一个。

从 API 中,我得到了字典中每个请求的响应,问题来了。

如何将正确的响应返回到正确的进程?

我认为必须有某种方法来识别请求来自的进程,然后我可以将该标识符与请求一起存储,然后再次找到该请求并使用该标识符发送正确的响应。但是如何:)

谢谢你帮助我:)

【问题讨论】:

  • 客户端连接的套接字是双向的。您可以将其保持打开状态,直到您从远程 API 获得响应,然后通过同一个套接字将响应发送回。当然,您需要将套接字对象保存在字典中。
  • 感谢您的回复。但是服务器中的socket对象只是一个对象。我怎样才能找到正确的连接来发送特定数据?我收集了很多请求并通过休息服务获得大量回复,然后我想将正确的请求返回到正确的进程。
  • 当你有一个监听套接字时,你接受一个连接;该连接对象对于连接客户端来说是唯一的。

标签: c# sockets


【解决方案1】:

组合:

SrcIP, 源端口, DstIP, 目标端口

始终是全局唯一的。任何机器上的任何连接都不会与任何其他连接相同。

因此,如果您没有将唯一的 GUID 构建到您的协议中,则可以将其用作索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 2013-12-12
    • 2014-06-16
    • 2012-03-29
    相关资源
    最近更新 更多