我正在尝试创建一个UWP客户端和服务器应用程序。客户端和服务器都托管在不同的计算机上。
Network connection with UWP Apps
使用此链接,我能够连接到服务器,并可以从客户端发送字符串到服务器。这件作品绝对没问题。
但现在的问题是如何将数据从服务器发送到客户端。我找不到合适的样品。有人可以说明从服务器向客户端发送数据。
任何一段代码或链接都非常受欢迎。
答案 0 :(得分:0)
从您提到的代码中,修改ConnectSocket()方法以从服务器读取响应。
我没有运行代码。可能需要修改
private async Task ConnectSocket()
{
StreamSocket socket = new StreamSocket();
socket.Control.KeepAlive = false;
HostName host = new HostName("localhost");
try
{
await socket.ConnectAsync(host, "5463");
Stream streamOut = socket.OutputStream.AsStreamForWrite();
StreamWriter writer = new StreamWriter(streamOut);
string request = "Test Self App \n";
await writer.WriteLineAsync(request);
await writer.FlushAsync();
// Code for reading
Stream streamIn = socket.OutputStream.AsStreamForRead();
StreamReader reader = new StreamReader(streamIn);
char[] result = new char[reader.BaseStream.Length];
await reader.ReadAsync(result, 0, (int)reader.BaseStream.Length);
// Your data will be in results
socket.Dispose();
}
catch (Exception ex)
{
txb_Events.Text += ex.Message;
//Logs.Add(ex.Message)
}
}
答案 1 :(得分:0)
但现在的问题是如何将数据从服务器发送到客户端。
由于您使用StreamSocket建立服务器和客户端之间的连接,因此有一个官方Socket activity trigger stream socket sample,其中包括客户端应用程序和服务器应用程序,并完美展示了如何使用Socket Activity Stream Socket API保持套接字连接在应用程序的生命周期内保持活动状态。
用于从StreamSocketListenerServer
(服务器)项目中的服务器到客户端部分发送数据:
private async void SendButton_Click(object sender, RoutedEventArgs e)
{
try
{
DataWriter writer = new DataWriter(connectedSocket.OutputStream);
writer.WriteBytes(Encoding.UTF8.GetBytes(SendMessageTextBox.Text));
SendMessageTextBox.Text = "";
await writer.StoreAsync();
writer.DetachStream();
writer.Dispose();
}
catch(Exception exception)
{
rootPage.NotifyUser(exception.Message, NotifyType.ErrorMessage);
}
}