android java.net.ConnectException: Connection refused: connect 2

第二种测试:用PC作服务端,用android做客户端:

服务端代码:

package com.tbk;
/*
 * PC做Socket服务端,接收android客户端发送的请求,将发送的文件写入本地
 */
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import com.tbk.FileUtile;

public class PCServerSocket {
	public static void main(String[] args) {
		ServerSocket serverSocket = null;
		FileUtile fileUtil = new FileUtile();
		try {
			//在PC端创建Socket服务端,监听端口7777
			serverSocket = new ServerSocket(7777);
			//阻塞方法,开始接收客户端请求。所谓阻塞,就是一直监听,直到有请求,否则,不向下进行
			Socket socket = serverSocket.accept();
			//获取客户端的inputstream数据流
			InputStream inputStream = socket.getInputStream();
			byte buffer[] = new byte[1024*4];
			int temp = 0 ;
			//用自定义的一个方法,将流写入本地一个文件
			fileUtil.write2SDFromInput("d:", "a.xml",inputStream );
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 

客户端代码:

package com.tbk;
/*
 * android作为socket客户端,将一个文件传到服务端
 */
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class AndClientSActivity extends Activity {
	Button btnClient = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        btnClient = (Button) findViewById(R.id.btnClient);
        btnClient.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				System.out.println("android Client");
				try {
					//用模拟器连接的时候,要用10.0.2.2这个地址,是android认为pc的地址。
					Socket socket = new Socket("10.0.2.2", 7777);
					//读取文件,获取一个inputstream数据流
					InputStream inputStream = new FileInputStream("/mnt/sdcard/gke.xml");
					//获得socket向外传输的outputStream数据流
					OutputStream outputStream = socket.getOutputStream();
					byte buffer[] = new byte[1024*8];
					int temp=0;
					//将inputStream数据流内容写到outputStream流中,通过socket发送出去
					while ((temp=inputStream.read(buffer))!=-1){
						outputStream.write(buffer, 0, temp);
					}
					outputStream.flush();
				} catch (Exception e) {
					e.printStackTrace();
				} 
			}
		});
    }
}


这里需要注意的是10.0.2.2这个地址,是android默认PC的地址,127.0.1.1被当做了android的内部地址

同样需要设置权限:

<uses-permission android:name="android.permission.INTERNET"/>



 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值