您现在的位置: 爱51代码网 >> 范文 >> 文章正文
C#给android通过Socket发送图片堵塞卡在len = dis.read(buffer)

最近一个项目要C#做服务器给android发送图片和文本,但是android端接收图片老是出现问题!
  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并显示图片,这个显然是不行的,求各位帮帮忙看看到底是哪里的问题!
第一个确保网络连接成功了。在dos下面telnet一下服务器。
然后 len = dis.read(buffer) 这地方是阻塞了。不知道你后台有没有异常。

然后看看这个。

 userList[0].socket.Send(msg, msg.Length, SocketFlags.None); 不知道你的服务器socket是怎么处理的。

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    redhat 2.6 (santigo 5.6) vsftp
    shell如何实现自动填写操作执行下
    linux shell 文件配置sh:color:
    shell script语法一定要加path吗
    SecureCRT如何访问虚拟机vmWare中
    C#如何读取WINDOWS的放大系数
    cximge的图如何存入数据库并提取
    DBGRID控件显示查询结果文本类型
    TChart控件如何把表中右边的系列
    fastreport提示没有找到fr_class
    linux下编译faac及faad2提示 rec
    TClientDataSet如何避免多人更新
    如何用delphi代码修改XML节点
    vc++ pvoid *用delphi怎么表达
    GIS用百度行政区域的经纬度直接画
    不小心卸载了.net 4 extend,vs2
    C#byte【】里的数转换成string时
    C#的session取不到值
    java如何判断一个字符串里的数字
    随机找出24个不一样的字,在把一
    如何获取drawable文件夹下图
    service监听推送点通知栏无法
    android如何移植webkit内核
    QT中readyread()信号接收不到
    QT中readyread()信号接收不到
    error opening trace file: 
    Running steps for project 
    jqueryMobile如何分页 undef
    两个android项目如何合并整合
    android(java)中可以直接ope
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |