【发布时间】:2016-07-28 20:19:37
【问题描述】:
我有 2 个套接字连接和发送文件。我想在某个时候向第二个套接字发送信号。我想发送一个字符串“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);
}
【问题讨论】:
-
什么是
in?有什么错误吗? -
@njzk2 in 是 DataInputStream (我编辑了问题)。没有错误。收到的字符串是乱码。
-
你先发送
data的内容是为了什么? -
@njzk2 数据是来自视频的 InputStream。场景是在发送视频时,例如,在某个时刻我想告诉另一个套接字开始播放视频。
-
但您正在写入相同的输出流。您如何期望您的客户端只接收“开始”命令,而不接收数据?
标签: java android sockets stream