有一台PC运行[Winform:服务器角色],另外五台运行[Winform:客户端角色].在[Winform:服务器角色]中,我使用以下代码获取本地IP address和端口号,[Winform:Server角色]将根据此自动分配的IP地址和端口号侦听所有传入的TCP请求.
Dim Listener As System.Net.Sockets.TcpListener Dim Client As New System.Net.Sockets.TcpClient Dim Message As String = "" Private Sub Form1_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load Listener = New System.Net.Sockets.TcpListener(System.Net.IPAddress.Any,0) Listener.Start() End Sub
所有[Winform:Client角色]如何在运行时知道我的[Winform:Server角色] IP地址和端口号?
我需要澄清我的意图.我目前处理我的意图可能不正确.我尝试创建一个“零配置客户端 – 服务器网络”,即插件和插件.玩.服务器将知道客户端的位置,反之亦然.我知道有一个程序(即MaxiVista)已经完成了.
MaxiVista有两个应用程序,即服务器和客户端.用户只需要在指定为服务器角色的PC中执行服务器应用程序,并在另一台指定为客户端角色的PC中执行客户端应用程序.然后,服务器将能够在同一LAN中找到所有正在执行的客户端.
我的意图就是这样.在同一LAN中即插即用“零配置客户端 – 服务器网络”.
您可以为例如配置DNS yourappserver指向你的服务器然后让客户端连接到那个,但这显然有点复杂(加上硬编码值不是一个很好的方法来做到这一点).
您可以使用的是某种服务公告 – 例如这是通过让服务器定期宣布“我是一个小服务器,短而粗壮(WhateverYourAppIsCalled在端口12345上的服务器)”以及您的客户端来监听此类请求,甚至是请求它们(“是否有服务器” WhateverYourAppIs在这里打电话?“).另见:http://en.wikipedia.org/wiki/Zero_configuration_networking#Service_discovery
(在紧要关头,你可以让服务器向网络广播它的存在并让客户端监听这样的广播,但是你基本上是在重新实现mDNS)