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

来源:互联网 发布:web工程师和java哪个好 编辑:程序博客网 时间:2024/06/01 10:25

第二种测试:用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服务端,监听端口7777serverSocket = 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() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubSystem.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"/>



 

原创粉丝点击