在设备上通过网络发送字节

本文关键字:网络 字节 | 更新日期: 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);