我正在制作C#Server和Socket图像发送应用程序。我现在面临的主要问题是,每当我加载客户端时,我必须指定服务器的名称或IP地址。
我能不知道客户端套接字如何能够获取某些端口XX上侦听服务器的IP地址?我不想在客户端手动修复或键入IP地址以连接到服务器套接字。 (抱歉我的英语不好)
我的情景是
我有3个名为A,B,C的平板电脑安装客户端应用程序和另外3个名为D,E,F的平板电脑安装了服务器应用程序。每个客户端都可以将图像发送到每个服所以问题是我不想在客户端套接字中修复服务器的IP地址。
答案 0 :(得分:0)
使用Udp套接字广播,可以发送数据在端口监听的所有IP地址。这是我发送给在端口4800监听的所有服务器的客户端代码。
foreach (IPAddress ip in allLocalNetworkAddresses.AddressList)
{
Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
//Allow sending broadcast messages
client.SetSocketOption(SocketOptionLevel.Socket,
SocketOptionName.Broadcast, 1);
//Bind on port 0. The OS will give some port between 1025 and 5000.
// client.Bind(new IPEndPoint(ip, 0));
//Create endpoint, broadcast.
IPEndPoint AllEndPoint = new IPEndPoint(IPAddress.Broadcast, Port);
byte[] sendData = Encoding.ASCII.GetBytes("1");
client.SendTo(sendData, AllEndPoint);
Console.Write("Client send '1' to " + AllEndPoint.ToString() +
Environment.NewLine);