xiaoqiang9527 发表于 2014-6-5 16:58:48

android 4.0 tcp socket创建不成功

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、例程:public class ClientSocket {
        static BufferedReader in;
        static PrintWriter out;

        public static Boolean SendMsg(MyData myData) {

                char[] bRecvBuff = new char;
                boolean bSuccess = false;

                String strRecv = null;
                myData.setStatus(Utility.SEND_FAIL);
                FileInputStream fis = null;
                DataOutputStream dos = null;
                int length = 0;
                try {

                        Socket client = null;
                        SocketAddress address;
                        if (myData.getType() == 0) {
                                address = new InetSocketAddress(Utility.SERVERIP,
                                                Utility.SERVERPORT);
                        } else {

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


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

                        client.setSoTimeout(5000);

                        client.setTcpNoDelay(true);
               
                        client.setSoLinger(true, 60);
                       
                        client.setSendBufferSize(8096);

                        client.setReceiveBufferSize(8096);

                        client.setKeepAlive(true);

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

                        String str = myData.getData();

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

                                while (line.read(buf) > 0) {
                                        line.read(buf);
                                        Log.d("send:", String.valueOf(buf));
                                        out.println(buf);
                                }
                                out.flush();
                        } else {
                                dos = new DataOutputStream(client.getOutputStream());
                                File file = new File(str);
                                fis = new FileInputStream(file);
                                byte sendBytes[] = new byte;

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

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

                                if (fis != null)
                                        fis.close();
                        }
                        strRecv = "";
                        int iRecvLen = in.read(bRecvBuff);
                        if (iRecvLen > 0) {
                                bRecvBuff = 0x00;
                                strRecv = String.valueOf(bRecvBuff);
                                strRecv = strRecv.substring(0, iRecvLen);
                        }
                        if (strRecv != null) {
                                myData.setData(strRecv);
                                myData.setStatus(Utility.RECV_SUCCESS);
                                bSuccess = true;
                        } else {
                                myData.setStatus(Utility.RECV_FAIL);
                                strRecv = "Please check the Socket connection!";
                        }
                        Log.d("Socket recieve", strRecv);
                        // line.close();

                        if (out != null)
                                out.close();
                        in.close();
                        client.close();

                } catch (UnknownHostException e) {
                        myData.setStatus(Utility.SEND_FAIL);
                        strRecv = "Please check the Socket connection!";
                        e.printStackTrace();
                } catch (IOException e) {
                        myData.setStatus(Utility.SEND_FAIL);
                        strRecv = "Please check the Socket connection!";
                        e.printStackTrace();
                }
                return bSuccess;
        }
}



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

xiaoqiang9527 发表于 2014-6-5 17:39
谢谢老师指导

,你是怎么通信成功的,我用PC机当服务器,模拟器当客户端能连接成功,,把客户端弄到开发板上 ,通信就链接不上了

mozun1 发表于 2014-7-14 14:47:30

TQ-lkp 发表于 2014-6-5 17:19
1、添加权限

2、例程:

只给这一段代码,里面有好多类 都没有啊?
页: [1]
查看完整版本: android 4.0 tcp socket创建不成功