我现在的问题是,android手机能通过socket连接到服务器,而且服务器也能接收到android手机发送来的数据,但是服务器收到数据之后发送数据给android手机,然后android就收不到数据了;
以下是android手机上发送文件名并且得到文件大小的代码// 向服务器提出下载请求,返回下载文件的大小  
    private long request(String fileName, String password) throws IOException {  
        // 获取socket的输入流并包装成DataInputStream  
        DataInputStream in = new DataInputStream(socket.getInputStream());  
        // 获取socket的输出流并包装成PrintWriter  
        PrintWriter out = new PrintWriter(new OutputStreamWriter(  
                socket.getOutputStream()));  
        // 生成下载请求字符串  
        String requestString = fileName;// + "@ " + password;  
        System.out.println("发出下载请求:"+fileName);
        out.println(requestString); // 发出下载请求  
        out.flush(); 
        return in.readLong(); // 接收并返回下载文件长度  
    }  
以下是C#服务器收到android发来的文件名,知道文件之后发送文件大小和文件的代码private string ReceiveFileName()
        {
            string recvStr = "";
            byte[] recvBytes = new byte[1024];
            int bytes = m_socket.Receive(recvBytes, recvBytes.Length, 0); //从android客户端接受信息
            recvStr = Encoding.ASCII.GetString(recvBytes, 0, bytes);
            Console.WriteLine("文件名"+recvStr);
            return recvStr;//返回文件名
        }        private void SendFile()
        {
            while (m_IsStart)
            {
                string fileName = ReceiveFileName();
                if (fileName != "")
                {
                    if (File.Exists(m_FileDirect + "1.jpg"))//下载本地存在的一个文件
                    {
                        FileInfo fi = new FileInfo(m_FileDirect + "1.jpg");
                        byte[] len = BitConverter.GetBytes(fi.Length);
                        m_socket.Send(len);//发送文件的长度
                        //发送文件
                        try
                        {
                            m_socket.SendFile(m_FileDirect + "1.jpg");
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine("出现错误" + e.Message);
                        }
                    }
                } 
            }
        }

解决方案 »

  1.   


    // 获取socket的输入流并包装成DataInputStream  
     DataInputStream in = new DataInputStream(socket.getInputStream());  
    这个不就是接收的地方吗?在第一段代码中
      

  2.   


    //************
    HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
    //得到读取的内容
    InputStreamReader in = new InputStreamReader(urlConn.getInputStream());
    //为输出创建BufferedReader  
    BufferedReader buffer = new BufferedReader(in);
    String inputLine = null;
    //使用循环来读取获得的数据 
    while (((inputLine = buffer.readLine()) != null))  10.                {  
    //我们在每一行后面加上一个"\n"来换行 
    resultData += inputLine + "\n"; 

    //关闭InputStreamReader 
    in.close();
     //关闭http连接 
     urlConn.disconnect(); 
    //*********
    这种方法试试.....
      

  3.   

    或者就是android 不能在非主线程更改界面,这样需要定义一个Handler来更新界面