- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个 Win 8 商店应用程序,我在其中使用 StreamSocket 连接到一个用 Java 编写的服务器。当我在调试中运行应用程序时,在 StreamSocket.ConnectAsync(...)、DataWriter.StoreAsync() 和 DataReader.LoadAsync(...) 上设置断点,它会连接、发送消息并接收回消息。但是,一旦我删除了我的任何一个断点,该方法就无法完成它的工作。我该如何解决这个问题?这是我的代码:
public async void Connect()
{
try
{
await socket.ConnectAsync(new Windows.Networking.HostName(ip),
"50000", SocketProtectionLevel.PlainSocket);
Connected = true;
}
catch (Exception e)
{
if (SocketError.GetStatus(e.HResult) == SocketErrorStatus.Unknown)
{
throw;
}
Windows.UI.Popups.MessageDialog md =
new Windows.UI.Popups.MessageDialog("Error: " + e.Message);
return;
}
return;
}
public async void HandShake()
{
try
{
//output
writer = new DataWriter(socket.OutputStream);
writer.UnicodeEncoding =
Windows.Storage.Streams.UnicodeEncoding.Utf8;
byte[] nameBytes = Encoding.UTF8.GetBytes(Name.ToCharArray());
writer.WriteBytes(nameBytes);
await writer.StoreAsync();
await writer.FlushAsync();
writer.DetachStream();
writer.Dispose();
//input
reader = new DataReader(socket.InputStream);
reader.InputStreamOptions = InputStreamOptions.Partial;
reader.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf8;
uint bytesAvailable = await reader.LoadAsync(4096);
byte[] byArray = new byte[bytesAvailable];
reader.ReadBytes(byArray);
string temp = Encoding.UTF8.GetString(byArray, 0,
Convert.ToInt32(bytesAvailable));
temp = temp.Substring(0, temp.Length - 1);
if (temp == "NAME OK")
{
GoodName = true;
}
reader.DetachStream();
reader.Dispose();
}
catch (Exception e)
{
//await Task.WhenAll(tasks.ToArray());
if (SocketError.GetStatus(e.HResult) == SocketErrorStatus.Unknown)
{
throw;
}
Windows.UI.Popups.MessageDialog md =
new Windows.UI.Popups.MessageDialog("Error: " + e.Message);
md.ShowAsync();
}
}
最佳答案
LoadAsync
默认情况下不会阻塞,直到读取了所有请求的字节。您可能收到了部分消息。
您需要实现任何类型的 message framing你的协议(protocol)使用,正如我在我的博客上描述的那样。
附言避免 async void
。它确实使您的错误处理变得复杂。
关于c# - StreamSocket、DataWriter.StoreAsync()、DataReader.LoadAsync()——异步问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21359004/
我正在通过创建一些项目来学习 React Native。 我卡住了,无法加载自定义字体。我关注了this来自世博会文档的指南。但是我收到一个错误 fontFamily "raleway-bold" i
// Asynchronously load and execute a script from a specified URL function loadasync(url) { var head
假设我正在使用线程,它在 Windows::Storage::Streams::DataReader (m_reader) 的帮助下从网络套接字 (Windows::Networking::Socke
我正在尝试通过 WebAPI 调用从 RavenDb 加载文档。当我打开一个异步 IDocumentSession 并调用 LoadAsync 时,我没有得到任何异常或结果,线程立即退出,没有错误代码
当我遇到问题时,我正在我的项目中添加一些异步调用。 Session 和 AsyncSession 之间的相同调用没有返回我的文档。 这里是文档: class Company { string
我有一个程序,用户可以在其中查看保存在 XAML 中的各种 3D 模型,然后使用 TrackballDecorator 操作 Viewport3D。这些 XAML 文件中包含转换,我使用问题 WPF
我正在尝试通过 StreamSocket 发送 HTTP 请求,但响应被 chop 为 “failedWinRTError:对象已关闭。” 这是我的代码: var count, hostName,
我的 Windows Phone 8 应用程序中有以下代码。 //connection code, done during app start socket = new StreamSocket();
我想将数据库中的图像异步加载到图片框中。我该怎么做?现在我有: byte[] byteBLOBData = new byte[0]; byteBLOBData = (byte[])ds.Tables[
我正在将 React Native 与 Expo 结合使用,除了自定义字体的问题之外,一切都很顺利。我的字体 Lobster-Regular.ttf 在 ./assets/fonts 中,并且我一直在
我正在创建一个 Win 8 商店应用程序,我在其中使用 StreamSocket 连接到一个用 Java 编写的服务器。当我在调试中运行应用程序时,在 StreamSocket.ConnectAsyn
我在使用 Windows 8 UI 应用程序时遇到问题。我正在使用客户端-服务器通信,客户端需要一直检查新消息。所以我使用这样的代码,其中 _socket 是一个 StreamSoket: p
import React, { Component } from 'react'; import { View, TextInput, } from 'react-native'; imp
我的应用程序使用 CRNA 和 Expo,我的问题是 Font.loadAsync() 异步函数无法在我的项目目录的 asset/fonts/文件夹中找到 .otf 字体文件。我绝对确定目录和文件名是
我正在使用 C# 在 WinRT 上编写一个客户端应用程序,它通过 TCP 连接到多个服务器。对于 TCP 连接,我使用 StreamSocket。然后将输入和输出字符串包装在 DataWriter
我使用以下代码在 UWP WinRT 上使用 JSON 流: async function connect() { let stream: MSStream; return new C
有没有办法将 PictureBox 绑定(bind)到字符串,以便当字符串发生变化时,它会使用字符串中的 url 调用 LoadAsync() 并加载图像? 目前这是我在自动生成的代码中所拥有的。 t
我有一个 React Native,React 混合应用程序。对于 React Native,我使用的是 react-native-elements。 我的应用程序使用 Expo 运行,并使用 rea
这是react expo项目,使用react-native-form-validation进行验证时出现错误。 0 && errors.fullName} status={errors.fu
这是react expo项目,使用react-native-form-validation进行验证时出现错误。 0 && errors.fullName} status={errors.fu
我是一名优秀的程序员,十分优秀!