C#给android通过Socket发送图片的问题
最近一个项目要C#做服务器给android发送图片和文本,但是android端接收图片老是出现问题!
C#端发送图片
Android端接收线程:
现在的问题是每次发送图片之后android端会一直堵塞卡在len = dis.read(buffer),并不会返回-1,只有在关闭服务器之后才会返回-1并显示图片,这个显然是不行的,求各位帮帮忙看看到底是哪里的问题!
C#端发送图片
public Byte[] getphoto(string photopath)
{
string str = photopath;
FileStream file = new FileStream(str, FileMode.Open, FileAccess.Read);
Byte[] bytBLOBData = new Byte[file.Length];
file.Read(bytBLOBData, 0, bytBLOBData.Length);
file.Close();
return bytBLOBData;
}
private void SendData(string data)
{
try
{
Byte[] msg = getphoto(data);
userList[0].socket.Send(msg, msg.Length, SocketFlags.None);
MessageBox.Show("" + msg.Length);
data = string.Format("To[{0}]:{1}", userList[0].socket.RemoteEndPoint.ToString(), data);
listBoxStatu.Invoke(AppendString, data);
}
catch
{
}
}Android端接收线程:
private class ReceiveThread extends Thread {
private BufferedInputStream dis = null;
private Socket s = null;
ReceiveThread(Socket socket) {
try {
s = socket;
dis = new BufferedInputStream(s.getInputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void run() {
while (isConnect) {
try {
Thread.sleep(1000);
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[ 1024];
int len = -1;
while ((len = dis.read(buffer)) != -1) {
outStream.write(buffer, 0, len);
}
byte[] data = outStream.toByteArray();
outStream.flush();
outStream.close();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inSampleSize = 10; // width,hight设为原来的十分一
if (data.length > 0) {
bm = BitmapFactory.decodeByteArray(data, 0,
data.length, options);
if (bm != null) {
System.out.println(data.length);
myHandler.sendEmptyMessage(0);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
close();
}
}
}
}现在的问题是每次发送图片之后android端会一直堵塞卡在len = dis.read(buffer),并不会返回-1,只有在关闭服务器之后才会返回-1并显示图片,这个显然是不行的,求各位帮帮忙看看到底是哪里的问题!
...全文
相关推荐
Android应用源码安卓与PC的Socket通信项目
**C#与Android通信**:项目中的"C#与Android-Socket通信"可能是一个相关的示例或参考资料,说明如何在C#编写的服务端与Android客户端之间进行Socket通信。
C#与Android Socket通信:长连接心跳与粘包处理全解析
Socket编程是构建客户端与服务器实时通信的基础技术,尤其在Android与PC之间进行数据采集和设备控制时,TCP长连接因其可靠性和低延迟成为首选方案。在实际开发中,开发者常面临报文边界不清、粘包半包、断线检测等问题,解决这些问题的核心在于设计合理的报文格式、心跳机制以及高效的解包逻辑。C#作为PC端常用语言,通过TcpListener可轻松实现多客户端管理;Android端则需注意线程模型和字节序对齐。本文基于一份可直接运行的C#版Android与PC Socket通信源码,详细解析从协议设计、C#服
自动发送邮件
**图库访问**:在Android或iOS等移动设备上,可能需要访问图库应用来选择图片。
精典源码之将手机摄像头获取的图片通过wifi发送到PC机上并进行显示.rar
Wi-Fi通信:要通过Wi-Fi发送图像,我们需要使用网络编程技术。在Android中,可以使用Socket编程实现TCP/IP连接,或者使用HTTP/HTTPS协议通过Web服务发送数据。
基于安卓的socket视频传数
"这篇文章主要探讨了如何在安卓平台上利用Socket技术进行视频数据的传输,特别是在物联网领域的应用。手机客户端作为发送方,通过Socket将视频流发送到PC端,PC端接收后可以显示在如C#应用程序


