【发布时间】:2015-05-21 11:58:27
【问题描述】:
我正在使用 C# 编写 TCP 客户端服务器软件。 我希望客户端在服务器启动后自动与服务器连接。 要执行此任务,客户端可能需要知道服务器是否已启动。 但是如何,有可能吗?
我的情况: 在同一个 LAN 网络上有一个客户端和一个服务器。每个人都知道另一个人的IP地址。 这是在它们之间建立联系的代码部分:
服务器端:
// Starting the Server ...
TcpListener serverSocket = new TcpListener(8888);
TcpClient clientSocket = default(TcpClient);
serverSocket.Start();
...
// Listening for client's connection in a thread ...
while (true)
{
clientSocket = serverSocket.AcceptTcpClient();
msg(" The client connected");
}
...
客户端:
// Here, client makes connection to the server when user clicks a button
clientSocket.Connect("192.168.1.1", "8888");
...
【问题讨论】:
-
简单的解决方案:客户端可以轮询服务器,当发现/握手时你会知道服务器在那里......或者......你可以让服务器广播“我还活着”如果您有正在监听的客户端,则在启动时发送消息。
-
请阅读stackoverflow.com/help/how-to-ask。您的问题中没有足够的上下文来提供一个好的答案。您的客户端和服务器各自运行的网络环境是什么?他们在同一个局域网上吗?还是互联网上的服务器远离客户端?这需要所有个可能的客户吗?或者它是否足以为服务器已知的客户端工作?服务器多久将其状态从“未启动”更改为“已启动”,反之亦然?使用中间匹配服务器是否可以接受?等等。
-
感谢您的建议。我按照你的建议提供了我的情况和代码部分
-
如果这是局域网,则仅使用多播查看流量。
标签: c# tcpclient tcplistener tcpsocket