我已经采用了 microsoft 示例代码并正在尝试对其进行测试。
在这段代码中,服务器启动,接收连接,然后什么都不做。连接后,程序将自行关闭,没有错误。任何人都可以对这个问题有所了解。我是套接字新手。
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
StartServer();
Connect();
}
public async void StartServer()
{
try
{
StreamSocketListener socketListener = new StreamSocketListener();
//Hook up an event handler to call when connections are received.
socketListener.ConnectionReceived += SocketListener_ConnectionReceived;
//Start listening for incoming TCP connections on the specified port. You can specify any port that' s not currently in use.
await socketListener.BindServiceNameAsync("1337");
Debug.WriteLine("Server Started");
}
catch (Exception e)
{
Debug.WriteLine("Server Failed to Start: "+e.Message );
}
}
private void SocketListener_ConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args)
{
try
{
//Read line from the remote client.
//Stream inStream = args.Socket.InputStream.AsStreamForRead();
//StreamReader reader = new StreamReader(inStream);
//string request = await reader.ReadLineAsync();
////infobox.Text = request + "\n";
////Send the line back to the remote client.
//Stream outStream = args.Socket.OutputStream.AsStreamForWrite();
//StreamWriter writer = new StreamWriter(outStream);
//await writer.WriteLineAsync(request);
//await writer.FlushAsync();
Debug.WriteLine("Server Received Connection");
}
catch (Exception e)
{
Debug.WriteLine("Connection Error:" +e.Message);
}
}
//client stuff
public async void Connect()
{
try
{
StreamSocket socket = new StreamSocket();
Windows.Networking.HostName serverHost = new Windows.Networking.HostName("localhost");
//Every protocol typically has a standard port number. For example HTTP is typically 80, FTP is 20 and 21, etc.
//For the echo server/client application we will use a random port 1337.
string serverPort = "1337";
await socket.ConnectAsync(serverHost, serverPort);
Debug.WriteLine("Client Connected");
}
catch (Exception e)
{
Debug.WriteLine("Client Connect Error: " + e.Message);
}
}
}
然后我无法重新启动应用程序,除非我删除 bin 和 obj 目录,因为访问被拒绝。