- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经实现了一个 Android 应用程序,它使用 SP 相机拍照并通过套接字将其发送到服务器。
我正在使用以下 (JAVA) 代码读取本地存储的图像文件,并通过套接字以连续的 block 形式发送它:
FileInputStream fileInputStream = new FileInputStream( "my_image_file_path" );
int nRead;
byte[] data = new byte[16384];
try {
while( (nRead = fileInputStream.read(data, 0, data.length)) != -1 ){
networkOutputStream.write( data, 0, nRead );
}
} catch( IOException e ){
e.printStackTrace();
}
fileInputStream.close();
以及以下 (C/C++) 代码读取它并将其存储在服务器上:
char newbuffer[MAX_BUF_SIZE];
int checkOperation;
ofstream outfile( "image_file_path".c_str(), ofstream::binary );
do{
checkOperation = read( clientSocketDescriptor, newbuffer, sizeof(newbuffer) );
if( checkOperation < 0 ){
cout << "Error in recv() function, received bytes = " << checkOperation << endl;
exit(1);
}else if (checkOperation != 0 ){
/*
* some data was read
*/
cout << endl << "READ Bytes: " << checkOperation << endl;
outfile.write( newbuffer, checkOperation );
/*
* emptying buffer for new incoming data
*/
for(int i = 0; i < sizeof(newbuffer); i++){
newbuffer[i] = 0;
}
}
}while( checkOperation =! 0 );
outfile.close();
Android 客户端应用程序似乎正确写入套接字中的所有字节,并成功退出 while
循环。
但是,服务器代码卡在其 while
循环的最后一次迭代中,无法继续执行。
EOF
?在此先感谢您提供的任何帮助,因为我真的被困住了!
最佳答案
您没有关闭 networkOutputStream
,因此 C++ 代码不知道您已完成。
要么您需要关闭输出流——这显然只有在您不需要在其上发送任何更多数据时才可行——或者您需要在协议(protocol)中包含一些元数据以在开始编写之前指示如何有更多的数据,或者包括一些事后作为“完成”的指标。一般来说,我更喜欢长度前缀 - 如果“完成”指示符自然出现在数据中,这比担心转义要简单得多。
中途之家是重复说“这是一个数据长度为 X 的 block ”,然后是“我完成了,没有更多的 block ”消息(例如“这是一个数据长度为 0 的 block ”) ).这样您就不需要事先知道总长度。
关于java - 通过 Socket 发送的图像流 - 服务器死锁问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12070203/
我有类似下面的代码: ... id: myComponent signal updateState() property variant modelList: [] Repeater { mo
我正在处理一些我无法展示的私有(private)代码,但我已经制作了一些示例代码来描述我的问题: 主.c: #include #include #include #include typede
这个问题在这里已经有了答案: 关闭10 年前。 Possible Duplicate: what are the differences in die() and exit() in PHP? 我想
在编写 Perl 模块时,在模块内部使用 croak/die 是一个好习惯吗? 毕竟,如果调用者不使用 eval block ,模块可能会使调用它的程序崩溃。 在这些情况下,最佳做法是什么? 最佳答案
我有一些搜索线程正在存储结果。我知道当线程启动时,JVM native 代码会代理在操作系统上创建新 native 线程的请求。这需要 JVM 之外的一些内存。当线程终止并且我保留对它的引用并将其用作
我刚刚花了很多时间调试一个我追溯到 wantarray() 的问题。 .我已将其提炼为这个测试用例。 (忽略 $! 在这种情况下不会有任何有用信息的事实)。我想知道为什么wantarray在第二个示例
我看到一些代码是这样做的: if(something){ echo 'exit from program'; die; } ...more code 和其他只使用 die 的人: if
我正在尝试将此表格用于: 如果任何 $_POST 变量等于任何其他 $_POST 变量抛出错误。 如果只有几个,那不是问题,但我有大约 20 个左右所以如果我想这样做,我将不得不像这样 但这
每次我运行: hadoop dfsadmin -report 我得到以下输出: Configured Capacity: 0 (0 KB) Present Capacity: 0 (0 KB) DFS
我是一名优秀的程序员,十分优秀!