在设备上通过网络发送字节
本文关键字:网络 字节 | 更新日期: 2023-09-27 18:16:47
我试图通过使用网络流(tcp/ssl)来写一些字符串(如ascii)到服务器,即本地c#控制台应用程序。代码看起来像这样:
public void SendMessage(String message) throws IOException {
OutputStream stream = client.getOutputStream();
// message is a String of 27 characters.
stream.write(message.getBytes("US-ASCII"), 0, message.getBytes("US-ASCII").length);
stream.flush();
}
这在模拟器上工作得很好,但是,当我在我的设备上运行应用程序(Galaxy A5上的棒棒糖5.0.2)时,它只发送一个字节。这里有什么问题?
我在服务器端的接收代码,我首先尝试读取前四个字节(c#):
var messageData = new StringBuilder();
var buffer = new byte[4];
var bytes = sslStream.Read(buffer, 0, 4);
var len = Encoding.ASCII.GetString(buffer);
var chars = new char[Encoding.ASCII.GetCharCount(buffer, 0, bytes)];
// Use Decoder class to convert from bytes to ACII
// in case a character spans two buffers.
Encoding.ASCII.GetChars(buffer, 0, bytes, chars, 0);
messageData.Append(chars);
尝试使用标准的标准字符集。US_ASCII而不是硬编码字符串,这总是一个坏主意。
yourString.getBytes (StandardCharsets.US_ASCII);