我现在的问题是,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);
}
}
}
}
}
以下是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);
}
}
}
}
}
// 获取socket的输入流并包装成DataInputStream
DataInputStream in = new DataInputStream(socket.getInputStream());
这个不就是接收的地方吗?在第一段代码中
//************
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();
//*********
这种方法试试.....