Java 在字节之间的套接字之间发送字符串

Java 在字节之间的套接字之间发送字符串,java,android,sockets,stream,Java,Android,Sockets,Stream,我有两个套接字连接并发送文件。我想在某个时刻向第二个插座发送信号。我想发送一个字符串“start”,当接收器套接字收到它时,我执行一些操作。下面是收件人和发件人的代码。我做错了什么?接收器从未收到“开始”,我确信它已被发送。谢谢 发送方: byte[] buff = new byte[1024 * 50]; while (isRunning && (readBytes = data.read(buff, 0, buff.length)) != -1) { clie

我有两个套接字连接并发送文件。我想在某个时刻向第二个插座发送信号。我想发送一个字符串“start”,当接收器套接字收到它时,我执行一些操作。下面是收件人和发件人的代码。我做错了什么?接收器从未收到“开始”,我确信它已被发送。谢谢

发送方:

byte[] buff = new byte[1024 * 50];    
while (isRunning && (readBytes = data.read(buff, 0, buff.length)) != -1) {
    client.getOutputStream().write(buff, 0, readBytes);
    if(sendStart){
        client.getOutputStream().("start".getBytes("UTF-8"), 0, "start".getBytes("UTF-8").length);
        sendStart = false;
    }
}
接收端:

DataInputStream in = null;
   try {
        in = new DataInputStream(socket.getInputStream());
     } catch (IOException e) {
   }

byte buffer[] = new byte[1024 * 50]; 
while ((len = in.read(buffer)) != -1) {
    String received = new String(buffer, "UTF-8");
    if(received!=null && received.equals("start")){
        Log.d(TAG,"received start");
        //do something
    }
    receivedFile.write(buffer, 0, len);
}

我认为错误可能在这里:

client.getOutputStream().("start".getBytes("UTF-8"), 0, "start".getBytes("UTF-8").length);
如果您看一下,
write()
方法不在这一行的任何地方。
另外,我想问,您自己处理字符串序列化有什么特殊原因吗?您可以对字符串使用
PrintWriter
Scanner
之类的工具,也可以对任何类型的对象使用
ObjectOutputStream
ObjectInputStream

我认为错误可能在这里:

client.getOutputStream().("start".getBytes("UTF-8"), 0, "start".getBytes("UTF-8").length);
如果您看一下,
write()
方法不在这一行的任何地方。
另外,我想问,您自己处理字符串序列化有什么特殊原因吗?您可以对字符串使用
PrintWriter
Scanner
之类的工具,也可以对任何类型的对象使用
ObjectOutputStream
ObjectInputStream

中的
是什么?有错误吗?@njzk2中是DataInputStream(我编辑了这个问题)。没有错误。收到的字符串乱七八糟。首先发送
数据的内容
这是干什么用的?@njzk2数据是从视频输入的。场景是在发送视频时,在某个特定点,我想告诉另一个套接字开始播放视频,例如,但您正在写入同一个outputstream。您如何期望您的客户机只接收“启动”命令而不接收数据?在
中什么是
?有错误吗?@njzk2中是DataInputStream(我编辑了这个问题)。没有错误。收到的字符串乱七八糟。首先发送
数据的内容
这是干什么用的?@njzk2数据是从视频输入的。场景是在发送视频时,在某个特定点,我想告诉另一个套接字开始播放视频,例如,但您正在写入同一个outputstream。您如何期望您的客户机只接收“start”命令而不接收数据?