2013-04-15 70 views
1

比方说,我正在使用异步服务器和客户端连接到服务器。服务器保存客户端有关其IP地址,端口号等的信息并将其存储在数据库中以供将来使用,是否有方法将客户信息存储起来。我试过看socket的实现,但我找不到任何方法来确定客户端用来发送数据的IP地址。我也想知道如果我使用本地主机(例如127.0.0.1)在同一台机器上测试多个客户端会发生什么情况,并且会以某种方式发生冲突?使用保存的客户端IP地址将数据包从服务器发送到特定客户端?

回答

1

使用socket::remote_endpoint()方法获取连接套接字的端点。从同一个远程主机连接的多个客户端将使用不同的端口号,例如127.0.0.1:1234127.0.0.1:5678

+0

因此,我得到这部分'boost :: asio :: ip :: tcp :: endpoint endpoint = socket.remote_endpoint(ec);'但是我该如何使用端点对象将数据包发送到客户端?顺便说一下,对于异步服务器。 – pandoragami

+0

实际上看着代码,我意识到我只需要发送一个数据包到'endpoint.address'和'endpoint.port',但是增强'write'和'send'没有任何参数为IP或端口? – pandoragami

+0

@lost tcp套接字在数据流上运行,而不是数据包。您使用套接字发送数据,而不是端点。如果您的理解不明确,我建议您提出一个新问题。 –

相关问题