android java.net.ConnectException: Connection refused: connect

来源:互联网 发布:dd命令 备份linux系统 编辑:程序博客网 时间:2024/05/22 13:23

服务端代码:

package com.tbk;/* *  * android学习之 Socket编程 * UDP传输协议: 类似邮递,以数据包的形式发送。速度比较快,但目标是否正确接收,不负责验证。 * 以DatagramSocket/DatagramPackages处理。 * TCP传输协议:准确度较高,能够验证数据传输是否成功。 * 以ServerSocket/InputStream处理。 * 以TCP协议为例实现过程中遇到的问题 *  * 第一种测试:用PC作客户端,用android做服务端 */import java.io.InputStream;import java.net.InetAddress;import java.net.NetworkInterface;import java.net.ServerSocket;import java.net.Socket;import java.net.SocketException;import java.util.Enumeration;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class NewSocketActivity extends Activity {Button btnSocket = null;TextView textView = null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);setContentView(R.layout.main);btnSocket = (Button) findViewById(R.id.btnSocket);textView = (TextView) findViewById(R.id.socketText);btnSocket.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//实在无法猜测手机的地址,被迫,查询得知System.out.println(GetHostIp());new ServerThread().start();}});}class ServerThread extends Thread {public void run() {ServerSocket serverSocket = null;try {serverSocket = new ServerSocket(6767);Socket socket = serverSocket.accept();InputStream inputStream = socket.getInputStream();byte buffer[] = new byte[1024 * 4];int temp = 0;while ((temp = inputStream.read(buffer)) != -1) {System.out.println(new String(buffer, 0, temp));}} catch (Exception e) {System.out.println(e);e.printStackTrace();} finally {try {serverSocket.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}public String GetHostIp() {try {for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {NetworkInterface intf = en.nextElement();for (Enumeration<InetAddress> ipAddr = intf.getInetAddresses(); ipAddr.hasMoreElements();) {InetAddress inetAddress = ipAddr.nextElement();if (!inetAddress.isLoopbackAddress()) {return inetAddress.getHostAddress();}}}}  catch (Exception e) {}return null;}}

 

客户端代码:

import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;import java.net.UnknownHostException;public class TCPClient {public static void main(String[] args) {// TODO Auto-generated method stubtry {//根据ip地址,端口号创建一个socket //这个地址获得的很辛苦,网络上很多人也多卡壳了//127这样的地址都提示: java.net.ConnectException: Connection refused: connect//我后来是写了个获得手机地址的方法,结果还非法了。直到把wifi打开,获取到了一个地址。见服务端的GetHostIp方法,至此,才正确Socket socket = new Socket("192.168.1.111", 6767);//创建一个从文件中读取内容的输入数据流InputStream inputStream = new FileInputStream("e://sqlnet.log");//创建一个要通过socket发送数据的输出流OutputStream outputStream = socket.getOutputStream();byte buffer[] = new byte[1024*4];int temp=0;//循环,将文件输入流的内容写到socket的输出流中,即发送出去。while ((temp=inputStream.read(buffer))!=-1){outputStream.write(buffer, 0, temp);}outputStream.flush();} catch (Exception e) {e.printStackTrace();}}}


成功。

注释中最重要的

这个地址获得的很辛苦,网络上很多人也多卡壳了
127这样的地址都提示: java.net.ConnectException: Connection refused: connect
我后来是写了个获得手机地址的方法,结果还非法了。直到把wifi打开,获取到了一个地址。见服务端的GetHostIp方法,至此,才正确

 

还要注意一点,需要给对应的权限:

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


之后就是一下篇,PC做服务端,手机做客户端,同样会有Connection refused: connect的错误

 

原创粉丝点击