【发布时间】:2020-01-26 22:35:42
【问题描述】:
我有一个监听传入消息的 UWP(即将成为 MacOS)应用程序。用户可以配置要监听的 IP 地址和端口。一旦套接字连接正在侦听,用户还可以返回设置并更改 IP 地址或端口。我试图弄清楚如何关闭现有的侦听器并在用户更改值时使用新的端口/IP 地址重新启动它。这是我启动监听器的代码。任何帮助将不胜感激。
private static Socket iobj_listener;
public async static Task StartListening()
{
try
{
Debug.WriteLine("Point 1");
IPEndPoint localEndPoint = new IPEndPoint(ViewModelObjects.AppSettings.ServerIPAddress, ViewModelObjects.AppSettings.ServerPort);
// Create a TCP/IP socket.
iobj_listener = new Socket(ViewModelObjects.AppSettings.ServerIPAddress.AddressFamily,
SocketType.Stream, ProtocolType.Tcp);
// Bind the socket to the local endpoint and listen for incoming connections.
iobj_listener.Bind(localEndPoint);
iobj_listener.Listen(100);
ViewModelObjects.AppSettings.ListeningOnSocket = true;
while (true)
{
Debug.WriteLine("Point 2");
// Set the event to nonsignaled state.
allDone.Reset();
// Start an asynchronous socket to listen for connections.
Debug.WriteLine("Waiting for a connection on " + ViewModelObjects.AppSettings.ServerIPAddress.ToString() + "...");
iobj_listener.BeginAccept(
new AsyncCallback(AcceptCallback),
iobj_listener);
// Wait until a connection is made before continuing.
allDone.WaitOne();
}
}
catch (Exception e)
{
Debug.WriteLine(e.ToString());
}
finally
{
Debug.WriteLine("Point 3");
ViewModelObjects.AppSettings.ListeningOnSocket = false;
}
}
【问题讨论】:
-
这似乎与更改套接字的端口或 IP 地址没有任何关系。看起来关机过程只是使用此命令关闭计算机。 System.Diagnostics.Process.Start("关机", "-s -t 10");
-
当你想停止监听时,一个简单的方法是使用
stop方法。更多详情请查看链接:stackoverflow.com/questions/365370/… -
Wendy,需要明确的是,我没有使用 TCPClient 对象。我使用 System.Net.Sockets Socket 对象。我有点让它工作,很快就会发布更新。
标签: sockets xamarin.forms xamarin.uwp