求助!android虚拟机端访问电脑的tomcat超时!

a641324093 2014-11-17 09:09:35
在本地下了tomcat 在java上写传输是成功了的,但是转移到android上就超时了,我怀疑是不是路径没写对,小菜鸟,求解
代码如下:
package com.myy.dowloaderforandrop;

import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;


public class MainActivity extends ActionBarActivity {

protected static final int ERROR = 0;
public static int thread_count = 3;
public static int thread_num = thread_count;
EditText et;
ProgressBar pb;
Button but;

public Handler handler = new Handler()
{
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what==ERROR)
{
Toast.makeText(MainActivity.this,(String)msg.obj,Toast.LENGTH_SHORT).show();
}
}

};
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et = (EditText) findViewById(R.id.et_url);
pb = (ProgressBar) findViewById(R.id.pb_down);
but = (Button) findViewById(R.id.but_down);
}

public void download(View view)
{
//连接服务器,获得文件长度并且在本地创建一个相同大小的文件
new Thread()
{
public void run()
{
try {

String path =et.getText().toString().trim();
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(1000);
conn.setRequestMethod("GET");
int code =conn.getResponseCode();
if(code==200)
{
int len = conn.getContentLength();

int blocklen = len/thread_count;
System.out.println("文件总长度为"+len);
//创建一个长度相同的文件
RandomAccessFile raf = new RandomAccessFile("/sdcard/setup.exe","rwd");
raf.setLength(len);
raf.close();

for(int id = 1;id<=thread_count;id++)
{
int start = (id-1)*blocklen;
int end = id*blocklen-1;
if(id==thread_count)//为最后一个线程时,使他的结尾为总长度
{
end=len;
}
System.out.println("线程"+id+" start:"+start+" end: "+end);
new DownloadThread(path,id,start,end).start();
}
}
else
{
System.out.println("连接出错" );
Message msg = new Message();
msg.what=ERROR;
msg.obj="连接出错";
handler.sendMessage(msg);
}
} catch (Exception e) {
System.out.println("服务器出错" );
Message msg = new Message();
msg.what=ERROR;
msg.obj="服务器出错";
handler.sendMessage(msg);
e.printStackTrace();
}
}
}.start();
}
}

logcat如下:
11-17 20:55:22.590: I/System.out(14366): 服务器出错
11-17 20:55:22.620: W/System.err(14366): java.net.ConnectException: failed to connect to /127.0.0.1 (port 8080) after 1000ms: isConnected failed: ECONNREFUSED (Connection refused)
11-17 20:55:22.630: W/System.err(14366): at libcore.io.IoBridge.isConnected(IoBridge.java:214)
11-17 20:55:22.630: W/System.err(14366): at libcore.io.IoBridge.connectErrno(IoBridge.java:152)
11-17 20:55:22.640: W/System.err(14366): at libcore.io.IoBridge.connect(IoBridge.java:112)
11-17 20:55:22.640: W/System.err(14366): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
11-17 20:55:22.640: W/System.err(14366): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
11-17 20:55:22.650: W/System.err(14366): at java.net.Socket.connect(Socket.java:842)
11-17 20:55:22.650: W/System.err(14366): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:77)
11-17 20:55:22.650: W/System.err(14366): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
11-17 20:55:22.660: I/WindowManager(78): createSurface Window{412d47b8 Toast paused=false}: DRAW NOW PENDING
11-17 20:55:22.680: W/System.err(14366): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
11-17 20:55:22.680: W/System.err(14366): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
11-17 20:55:22.680: W/System.err(14366): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
11-17 20:55:22.690: W/System.err(14366): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
11-17 20:55:22.690: W/System.err(14366): at libcore.net.http.HttpEngine.connect(HttpEngine.java:303)
11-17 20:55:22.690: W/System.err(14366): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
11-17 20:55:22.700: W/System.err(14366): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
11-17 20:55:22.700: W/System.err(14366): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
11-17 20:55:22.721: W/System.err(14366): at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:479)
11-17 20:55:22.721: W/System.err(14366): at com.myy.dowloaderforandrop.MainActivity$2.run(MainActivity.java:60)
11-17 20:55:22.731: W/System.err(14366): Caused by: libcore.io.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused)
11-17 20:55:22.731: W/System.err(14366): at libcore.io.IoBridge.isConnected(IoBridge.java:201)
11-17 20:55:22.731: W/System.err(14366): ... 17 more
11-17 20:55:24.010: D/dalvikvm(144): GC_CONCURRENT freed 538K, 19% free 7482K/9223K, paused 4ms+7ms
11-17 20:56:05.041: W/ProcessStats(78): Skipping unknown process pid 14645
11-17 20:56:09.420: D/dalvikvm(195): GC_CONCURRENT freed 384K, 8% free 7357K/7943K, paused 5ms+4ms
11-17 20:56:37.490: D/dalvikvm(14366): GC_CONCURRENT freed 209K, 4% free 7106K/7367K, paused 4ms+3ms
11-17 21:00:00.601: A/BatteryStatsImpl(78): problem reading network stats
11-17 21:00:00.601: A/BatteryStatsImpl(78): java.lang.IllegalStateException: problem parsing line: null
11-17 21:00:00.601: A/BatteryStatsImpl(78): at com.android.internal.net.NetworkStatsFactory.readNetworkStatsDetail(NetworkStatsFactory.java:313)
11-17 21:00:00.601: A/BatteryStatsImpl(78): at com.android.internal.net.NetworkStatsFactory.readNetworkStatsDetail(NetworkStatsFactory.java:247)
11-17 21:00:00.601: A/BatteryStatsImpl(78): at com.android.internal.os.BatteryStatsImpl.getNetworkStatsDetailGroupedByUid(BatteryStatsImpl.java:5734)
11-17 21:00:00.601: A/BatteryStatsImpl(78): at com.android.internal.os.BatteryStatsImpl.access$100(BatteryStatsImpl.java:76)
11-17 21:00:00.601: A/BatteryStatsImpl(78): at com.android.internal.os.BatteryStatsImpl$Uid.computeCurrentTcpBytesReceived(BatteryStatsImpl.java:2457)
11-17 21:00:00.601: A/BatteryStatsImpl(78): at com.android.internal.os.BatteryStatsImpl$Uid.getTcpBytesReceived(BatteryStatsImpl.java:2446)
11-17 21:00:00.601: A/BatteryStatsImpl(78): at com.android.internal.os.BatteryStatsImpl.writeSummaryToParcel(BatteryStatsImpl.java:5437)
11-17 21:00:00.601: A/BatteryStatsImpl(78): at com.android.internal.os.BatteryStatsImpl.writeLocked(BatteryStatsImpl.java:4836)
11-17 21:00:00.601: A/BatteryStatsImpl(78): at com.android.internal.os.BatteryStatsImpl.writeAsyncLocked(BatteryStatsImpl.java:4818)
11-17 21:00:00.601: A/BatteryStatsImpl(78): at com.android.server.am.ActivityManagerService.updateCpuStatsNow(ActivityManagerService.java:1600)
11-17 21:00:00.601: A/BatteryStatsImpl(78): at com.android.server.am.ActivityManagerService$3.run(ActivityManagerService.java:1482)
11-17 21:00:00.601: A/BatteryStatsImpl(78): Caused by: java.io.FileNotFoundException: /proc/net/xt_qtaguid/stats: open failed: ENOENT (No such file or directory)
11-17 21:00:00.601: A/BatteryStatsImpl(78): at libcore.io.IoBridge.open(IoBridge.java:406)
11-17 21:00:00.601: A/BatteryStatsImpl(78): at java.io.FileInputStream.<init>(FileInputStream.java:78)
11-17 21:00:00.601: A/BatteryStatsImpl(78): at java.io.FileReader.<init>(FileReader.java:42)
11-17 21:00:00.601: A/BatteryStatsImpl(78): at com.android.internal.net.NetworkStatsFactory.readNetworkStatsDetail(NetworkStatsFactory.java:272)
11-17 21:00:00.601: A/BatteryStatsImpl(78): ... 10 more
11-17 21:00:00.601: A/BatteryStatsImpl(78): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
11-17 21:00:00.601: A/BatteryStatsImpl(78): at libcore.io.Posix.open(Native Method)
11-17 21:00:00.601: A/BatteryStatsImpl(78): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:98)
11-17 21:00:00.601: A/BatteryStatsImpl(78): at libcore.io.IoBridge.open(IoBridge.java:390)
11-17 21:00:00.601: A/BatteryStatsImpl(78): ... 13 more
11-17 21:00:45.070: W/ProcessStats(78): Skipping unknown process pid 15979
11-17 21:00:45.070: W/ProcessStats(78): Skipping unknown process pid 15981
11-17 21:01:55.051: W/ThrottleService(78): unable to find stats for iface rmnet0
11-17 21:01:55.211: D/dalvikvm(78): GC_CONCURRENT freed 432K, 15% free 9189K/10759K, paused 8ms+8ms
11-17 21:03:12.960: D/dalvikvm(195): GC_CONCURRENT freed 384K, 8% free 7357K/7943K, paused 3ms+4ms
11-17 21:05:12.060: V/BackupManagerService(78): Running a backup pass
11-17 21:05:12.060: V/BackupManagerService(78): Backup requested but nothing pending
11-17 21:06:05.040: W/ProcessStats(78): Skipping unknown process pid 17521
11-17 21:06:05.040: W/ProcessStats(78): Skipping unknown process pid 17523
11-17 21:06:45.090: W/ProcessStats(78): Skipping unknown process pid 17718
11-17 21:07:05.030: W/ProcessStats(78): Skipping unknown process pid 17811
求助,麻烦各位了
...全文
403 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
a641324093 2014-11-27
  • 打赏
  • 举报
回复
全代码贴上。。。我本身函数是没用,应该是java函数本身调用的HashMap
package com.myy.dowloaderforandrop;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;

import android.os.Message;


public class DownloadThread extends Thread {

	public int id,start,end;
	public String path;
/**
 * @param path 下载路径
 * @param id 线程id
 * @param start 开始下载位置
 * @param end 结束下载位置
 */
	public DownloadThread(String path,int id, int start, int end) {
		this.id = id;
		this.start = start;
		this.end = end;
		this.path=path;
	}

	public void run() {
		
		try {
			
			File check = new File("/sdcard/"+id+".txt");
			byte [] temp = new byte[1024];
			int downloaded_len=0;
			if(check.exists()&&check.length()>0)
			{
				FileInputStream fis = new FileInputStream(check);
				int temp_len;
				temp_len = fis.read(temp);
				String down_str = new String(temp,0,temp_len); 
				downloaded_len = Integer.parseInt(down_str);
				System.out.println("线程"+id+" 已下载: "+downloaded_len);
				fis.close();
			}
			
			URL url;
			url = new URL(path);
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			//重要:请求服务器只是下载部分内容且设置下载位
			conn.setRequestProperty("Range","bytes="+(start+downloaded_len)+"-"+end);
			System.out.println("线程"+id+" 下载位置: "+(start+downloaded_len));
			conn.setConnectTimeout(5000);
			conn.setRequestMethod("GET");
			
			//服务器请求全部资源成功返回200,请求部分资源成功返回203
			int code =conn.getResponseCode();
			System.out.println("线程"+id+" code: "+code);
			InputStream is = conn.getInputStream();
			RandomAccessFile raf = new RandomAccessFile("/sdcard/setup.exe","rwd");
			//  记录已经下载的位置到文件夹
			
			//定位
			raf.seek(start+downloaded_len);
			
			int len =0;
			
			byte [] buffer = new byte[1024];
			while((len=is.read(buffer))!=-1)
			{
				RandomAccessFile record = new RandomAccessFile("/sdcard/"+id+".txt","rwd");
				//只有一个参数的write,结束位置为buffer的长度(结尾),若buffer未装满
				//就会出错
				raf.write(buffer,0,len);
				downloaded_len+=len;
				//将下载长度放入记录文件
				record.write(String.valueOf(downloaded_len).getBytes());
				record.close();
//				System.out.println("线程"+id+" 下载位置: "+(start+downloaded_len));
			}
			is.close();
			raf.close();
			MainActivity.thread_num--;
			System.out.println("线程"+id+"下载完毕");
		} catch (Exception e) {
			System.out.println("线程"+id+"出错");
//			Message msg = new Message();
//			msg.what=MainActivity.ERROR;
//			msg.obj="线程"+id+"出错";
//			MainActivity.handler.sendMessage(msg);
			e.printStackTrace();
		}finally
		{
			System.out.println("还有"+MainActivity.thread_num+"个线程");
			if(MainActivity.thread_num==0)//所有线程已经完成
			{
				for(int id = 1;id<=MainActivity.thread_count;id++)
				{
					File dle_file = new File("/sdcard/"+id+".txt");
					dle_file.delete();
					System.out.println(id+".txt 已经删除");
				}
			}
		}
		
	}
	
	
}
package com.myy.dowloaderforandrop;

import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;


public class MainActivity extends ActionBarActivity {
	
	protected static final int ERROR = 0;
	public static int thread_count = 3;
	public static int thread_num = thread_count;
	EditText et;
	ProgressBar pb;
	Button but;
	
	public Handler handler = new Handler()
	{
		public void handleMessage(Message msg) {
			super.handleMessage(msg);
			if(msg.what==ERROR)
			{
				Toast.makeText(MainActivity.this,(String)msg.obj,Toast.LENGTH_SHORT).show();
			}
		}
		
	};
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et = (EditText) findViewById(R.id.et_url);
        pb = (ProgressBar) findViewById(R.id.pb_down);
        but = (Button) findViewById(R.id.but_down);
    }

    public void download(View view)
    {
    	//连接服务器,获得文件长度并且在本地创建一个相同大小的文件
    	new Thread()
    	{
    		public void run()
    		{
    			try {
    				
    				String path =et.getText().toString().trim();
    				URL url = new URL(path);
    				HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    				conn.setConnectTimeout(1000);
    				conn.setRequestMethod("GET");
    				conn.connect();
    				int code =conn.getResponseCode();
    				int len;
    				if(code==200)
    				{
    					len = conn.getContentLength();
    					int blocklen = len/thread_count;
    					System.out.println("文件总长度为"+len);
    					//创建一个长度相同的文件
    					RandomAccessFile raf = new RandomAccessFile("/sdcard/setup.exe","rwd");
    					raf.setLength(len);
    					raf.close();
    					
    					for(int id = 1;id<=thread_count;id++)
    					{
    						int start = (id-1)*blocklen;
    						int end = id*blocklen-1;
    						if(id==thread_count)//为最后一个线程时,使他的结尾为总长度 
    						{
    							end=len;
    						}
    						System.out.println("线程"+id+" start:"+start+" end: "+end);
    						new DownloadThread(path,id,start,end).start();
    					}
    				}
    				else
    				{
    					System.out.println("连接出错" );
    					Message msg = new Message();
    					msg.what=ERROR;
    					msg.obj="连接出错";
    					handler.sendMessage(msg);
    				}
    			} catch (Exception e) {
    				System.out.println("服务器出错" );
    				Message msg = new Message();
					msg.what=ERROR;
					msg.obj="服务器出错";
					handler.sendMessage(msg);
    				e.printStackTrace();
    			}
    		}		
    	}.start();
    }
}
先贴着吧,以防有好心人帮我找...... 谢谢楼上了 ,我再检查下吧
Darcy杨 2014-11-24
  • 打赏
  • 举报
回复
看起来是你从HashMap取值的时候,传了个null进去
a641324093 2014-11-22
  • 打赏
  • 举报
回复
好吧 ,参考http://zhidao.baidu.com/link?url=Kg8b6m5OkTq7-oNXjDZt9ydDGCVGCZt-DaYEstFiP2tHsFVy1w1REYvlZkwFWns6d5a6dGO9-aAAG0iJvtC01q这个问题 ,我把自己的ip换上去了 换后的地址url如下:http://10.28.20.74:8080/setup.exe 然后访问是应该成功了 但是报出了新的错误。。。 11-22 12:55:17.342: I/System.out(643): 服务器出错 11-22 12:55:17.363: W/System.err(643): java.lang.NullPointerException 11-22 12:55:17.373: W/System.err(643): at libcore.net.http.HttpConnection$Address.hashCode(HttpConnection.java:343) 11-22 12:55:17.383: W/System.err(643): at java.util.HashMap.get(HashMap.java:298) 11-22 12:55:17.383: W/System.err(643): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:67) 11-22 12:55:17.383: W/System.err(643): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128) 11-22 12:55:17.383: W/System.err(643): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308) 11-22 12:55:17.383: W/System.err(643): at libcore.net.http.HttpEngine.connect(HttpEngine.java:303) 11-22 12:55:17.393: W/System.err(643): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282) 11-22 12:55:17.393: W/System.err(643): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232) 11-22 12:55:17.413: I/WindowManager(78): createSurface Window{412f6a48 Toast paused=false}: DRAW NOW PENDING 11-22 12:55:17.413: W/System.err(643): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80) 11-22 12:55:17.413: W/System.err(643): at com.myy.dowloaderforandrop.MainActivity$2.run(MainActivity.java:61) 11-22 12:56:26.173: D/dalvikvm(643): GC_CONCURRENT freed 210K, 4% free 7104K/7367K, paused 5ms+3ms 11-22 12:56:28.192: D/dalvikvm(171): GC_CONCURRENT freed 384K, 8% free 7358K/7943K, paused 4ms+4ms 11-22 12:59:11.422: W/ThrottleService(78): unable to find stats for iface rmnet0 好吧,如果还有人看的话,再帮一下吧。。
a641324093 2014-11-20
  • 打赏
  • 举报
回复
引用 7 楼 sirius93 的回复:
127.0.0.1代表自身,所以模拟器访问这个的话就是访问模拟器自己,应该用10.0.2.2
还是访问不到。。
a641324093 2014-11-20
  • 打赏
  • 举报
回复
引用 7 楼 sirius93 的回复:
127.0.0.1代表自身,所以模拟器访问这个的话就是访问模拟器自己,应该用10.0.2.2
好 我试试
coffee-time 2014-11-19
  • 打赏
  • 举报
回复
127.0.0.1代表自身,所以模拟器访问这个的话就是访问模拟器自己,应该用10.0.2.2
Darcy杨 2014-11-19
  • 打赏
  • 举报
回复
虚拟机访问127.0.0.1应该是访问不到你的电脑上的tomcat的
a641324093 2014-11-19
  • 打赏
  • 举报
回复
引用 3 楼 youngc527 的回复:
你连接的是 127.0.0.1 ? tomcat 也装在手机上了?
没有,是在电脑上装了,在电脑上android虚拟机运行的,感觉可能是路径不对,但是不知道怎么 弄。。。
a641324093 2014-11-19
  • 打赏
  • 举报
回复
没有,是在电脑上装了,在电脑上android虚拟机运行的,感觉可能是路径不对,但是不知道怎么 弄。。。
Darcy杨 2014-11-18
  • 打赏
  • 举报
回复
你连接的是 127.0.0.1 ? tomcat 也装在手机上了?
a641324093 2014-11-18
  • 打赏
  • 举报
回复
伤心。。。没大神帮看一下吗
cgh6825 2014-11-17
  • 打赏
  • 举报
回复

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧