天嵌 ARM开发社区

 找回密码
 注册
查看: 6424|回复: 5

android 4.0 tcp socket创建不成功

[复制链接]
xiaoqiang9527 发表于 2014-6-5 16:58:48 | 显示全部楼层 |阅读模式
01-01 00:30:54.279: W/System.err(4111): java.net.ConnectException: failed to connect to /192.168.0.120 (port 45000): connect failed: ECONNREFUSED (Connection refused)
01-01 00:30:54.279: W/System.err(4111):         at libcore.io.IoBridge.connect(IoBridge.java:114)
01-01 00:30:54.284: W/System.err(4111):         at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
01-01 00:30:54.284: W/System.err(4111):         at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
01-01 00:30:54.284: W/System.err(4111):         at java.net.Socket.startupSocket(Socket.java:566)
01-01 00:30:54.284: W/System.err(4111):         at java.net.Socket.tryAllAddresses(Socket.java:127)
01-01 00:30:54.289: W/System.err(4111):         at java.net.Socket.<init>(Socket.java:177)
01-01 00:30:54.289: W/System.err(4111):         at java.net.Socket.<init>(Socket.java:149)
01-01 00:30:54.289: W/System.err(4111):         at com.xiaoqiang.dr4200.Main$MyHandler.handleMessage(Main.java:148)
01-01 00:30:54.289: W/System.err(4111):         at android.os.Handler.dispatchMessage(Handler.java:99)
01-01 00:30:54.294: W/System.err(4111):         at android.os.Looper.loop(Looper.java:137)
01-01 00:30:54.294: W/System.err(4111):         at android.app.ActivityThread.main(ActivityThread.java:4424)
01-01 00:30:54.294: W/System.err(4111):         at java.lang.reflect.Method.invokeNative(Native Method)
01-01 00:30:54.299: W/System.err(4111):         at java.lang.reflect.Method.invoke(Method.java:511)
01-01 00:30:54.299: W/System.err(4111):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-01 00:30:54.299: W/System.err(4111):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-01 00:30:54.299: W/System.err(4111):         at dalvik.system.NativeStart.main(Native Method)
01-01 00:30:54.304: W/System.err(4111): Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
01-01 00:30:54.304: W/System.err(4111):         at libcore.io.Posix.connect(Native Method)
01-01 00:30:54.309: W/System.err(4111):         at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
01-01 00:30:54.309: W/System.err(4111):         at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
01-01 00:30:54.309: W/System.err(4111):         at libcore.io.IoBridge.connect(IoBridge.java:112)
01-01 00:30:54.309: W/System.err(4111):         ... 15 more

我是在activity里想用udp建立连接并且间隔一秒后在互ping,一直这样保持连接,对方是一个电台,然后用tcp创建socket来发送命令来控制对方,现在是udp能保持ping通,而tcp建立socket就是败了,上边是log错误打印信息,望知道的老师给指导指导,配置权限也给了
TQ-lkp 发表于 2014-6-5 17:19:06 | 显示全部楼层
1、添加权限
<uses-permission android:name="android.permission.INTERNET" />
2、例程:
  1. public class ClientSocket {
  2.         static BufferedReader in;
  3.         static PrintWriter out;

  4.         public static Boolean SendMsg(MyData myData) {

  5.                 char[] bRecvBuff = new char[4096];
  6.                 boolean bSuccess = false;

  7.                 String strRecv = null;
  8.                 myData.setStatus(Utility.SEND_FAIL);
  9.                 FileInputStream fis = null;
  10.                 DataOutputStream dos = null;
  11.                 int length = 0;
  12.                 try {

  13.                         Socket client = null;
  14.                         SocketAddress address;
  15.                         if (myData.getType() == 0) {
  16.                                 address = new InetSocketAddress(Utility.SERVERIP,
  17.                                                 Utility.SERVERPORT);
  18.                         } else {

  19.                                 address = new InetSocketAddress(Utility.SERVERIP,
  20.                                                 Utility.SERVERPORT + 1);
  21.                         }


  22.                         client = new Socket();
  23.                         client.connect(address, 5000);

  24.                         client.setSoTimeout(5000);

  25.                         client.setTcpNoDelay(true);
  26.                
  27.                         client.setSoLinger(true, 60);
  28.                        
  29.                         client.setSendBufferSize(8096);

  30.                         client.setReceiveBufferSize(8096);

  31.                         client.setKeepAlive(true);

  32.                         in = new BufferedReader(new InputStreamReader(
  33.                                         client.getInputStream(), "utf-8"));

  34.                         String str = myData.getData();

  35.                         if (myData.getType() == 0) {
  36.                                 out = new PrintWriter(client.getOutputStream());
  37.                                 BufferedReader line = new BufferedReader(new InputStreamReader(
  38.                                                 new ByteArrayInputStream(str.getBytes())));
  39.                                 char buf[] = new char[2048];

  40.                                 while (line.read(buf) > 0) {
  41.                                         line.read(buf);
  42.                                         Log.d("send:", String.valueOf(buf));
  43.                                         out.println(buf);
  44.                                 }
  45.                                 out.flush();
  46.                         } else {
  47.                                 dos = new DataOutputStream(client.getOutputStream());
  48.                                 File file = new File(str);
  49.                                 fis = new FileInputStream(file);
  50.                                 byte sendBytes[] = new byte[str.getBytes().length];

  51.                                 dos.writeByte(myData.getType());
  52.                                 dos.writeBytes(Utility.ENC_TOKEN);
  53.                                 dos.flush();

  54.                                 while ((length = fis.read(sendBytes, 0, sendBytes.length)) > 0) {
  55.                                         dos.write(sendBytes, 0, length);
  56.                                         dos.flush();
  57.                                 }
  58.                                 client.shutdownOutput();

  59.                                 if (fis != null)
  60.                                         fis.close();
  61.                         }
  62.                         strRecv = "";
  63.                         int iRecvLen = in.read(bRecvBuff);
  64.                         if (iRecvLen > 0) {
  65.                                 bRecvBuff[iRecvLen] = 0x00;
  66.                                 strRecv = String.valueOf(bRecvBuff);
  67.                                 strRecv = strRecv.substring(0, iRecvLen);
  68.                         }
  69.                         if (strRecv != null) {
  70.                                 myData.setData(strRecv);
  71.                                 myData.setStatus(Utility.RECV_SUCCESS);
  72.                                 bSuccess = true;
  73.                         } else {
  74.                                 myData.setStatus(Utility.RECV_FAIL);
  75.                                 strRecv = "Please check the Socket connection!";
  76.                         }
  77.                         Log.d("Socket recieve", strRecv);
  78.                         // line.close();

  79.                         if (out != null)
  80.                                 out.close();
  81.                         in.close();
  82.                         client.close();

  83.                 } catch (UnknownHostException e) {
  84.                         myData.setStatus(Utility.SEND_FAIL);
  85.                         strRecv = "Please check the Socket connection!";
  86.                         e.printStackTrace();
  87.                 } catch (IOException e) {
  88.                         myData.setStatus(Utility.SEND_FAIL);
  89.                         strRecv = "Please check the Socket connection!";
  90.                         e.printStackTrace();
  91.                 }
  92.                 return bSuccess;
  93.         }
  94. }
复制代码




 楼主| xiaoqiang9527 发表于 2014-6-5 17:28:42 | 显示全部楼层
TQ-lkp 发表于 2014-6-5 17:19
1、添加权限

2、例程:

没一点注释,我不太能看懂,这个怎么那么长
 楼主| xiaoqiang9527 发表于 2014-6-5 17:39:51 | 显示全部楼层
谢谢老师指导
mozun1 发表于 2014-6-10 13:07:44 | 显示全部楼层

,你是怎么通信成功的,我用PC机当服务器,模拟器当客户端能连接成功,,把客户端弄到开发板上 ,通信就链接不上了
mozun1 发表于 2014-7-14 14:47:30 | 显示全部楼层
TQ-lkp 发表于 2014-6-5 17:19
1、添加权限

2、例程:

只给这一段代码  ,里面有好多类 都没有啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-7 02:18 , Processed in 1.062500 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表