为什么要在客户端套接字之前打开服务器套接字?

Donmezburak

我在Java中使用了套接字编程。我连接了一台PC和android平板电脑。服务器是PC,客户端是平板电脑。当我首先启动平板电脑时,无法连接插座。但是,当我首先启动pc时,可以连接套接字。为什么会这样呢?问题出在哪儿 ?

邮递区号:

`

btnNewButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            Thread t = new Thread(new Runnable() {

                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    ServerSocket listener = null;
                    Socket socket = null;
                    System.out.println("Opened");
                    try {
                        listener = new ServerSocket(1515);

                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        System.out.println(e1.getMessage());
                    }
                    String answer = null;

                    while(true)
                    {

                        try {
                            socket = listener.accept();

                            DataInputStream input =
                                    new DataInputStream(socket.getInputStream());
                            answer = input.readInt()+ " ";
                            answer = answer + input.readInt();
                            input.close();
                            dName.setText(answer);

                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        } finally {
                            try {
                                socket.close();
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }

                    }


                }
            });
            t.start();

`

平板电脑代码:

@Override
public void run() {
    // TODO Auto-generated method stub
    boolean check = false;
    while(!check)
    {
        try {
            check = InetAddress.getByAddress(new byte[] { (byte) 192, (byte) 168, 2, 86 }).isReachable(1000);
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    while(!socket.isConnected()){
        try {
            socket.connect(sockaddr, 1000);
            //  DataInputStream input =
            //          new DataInputStream(socket.getInputStream());
            //  int result = input.readInt();
            //  if(result == -2)
            //  {
            //      MainActivity.MainAct.StartUpdateActivity();
            //  }

        } catch (IOException e) {
            // TODO Auto-generated catch block
            //text.setText(e.getMessage());
            System.out.println(e.getMessage());
        }finally{

        }
    }

编辑:在使用InetAddress.isReachable进行检查时,始终为TRUE。这意味着isReachable始终为false。当我删除它时,可以建立连接。但是,问题仍然是相同的。

荣誉

检查文档isConnected套接字

Returns the connection state of the socket.
Note: Closing a socket doesn't clear its connection state, which means this method will return true for a closed socket (see isClosed()) if it was successfuly connected prior to being closed.

所以你

while(!socket.isConnected()){ 

线路仅在首次成功连接之前有效。

更新

似乎EJP的答案也是如此,即使您的while(!socket.isConnected()){工作正常,也无法使用已经关闭的套接字建立连接,但最终还是会发生java.net.SocketException: Socket closed因此,您必须每次都重新创建套接字。

    while (!shouldIStop()/*some condition in case if you ever want to stop*/) {
        Socket socket = new Socket();
        try {
            socket.connect(yourAddress, 1000);
            //do something...
        } catch (IOException e) {

        } finally {

        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python套接字服务器/客户端编程

来自分类Dev

C客户端/服务器套接字错误

来自分类Dev

服务器/客户端套接字连接

来自分类Dev

套接字编程-简单的客户端/服务器

来自分类Dev

客户端js上的套接字服务器?

来自分类Dev

Java客户端/服务器套接字问题

来自分类Dev

Java TCP 客户端/服务器套接字

来自分类Dev

设置客户端套接字和服务器套接字侦听器 (Java)

来自分类Dev

服务器套接字接受客户端套接字时,到底发生了什么事情?

来自分类Dev

使用Python使客户端套接字等待服务器套接字

来自分类Dev

将输入从C套接字客户端读取到Java套接字服务器

来自分类Dev

将客户端套接字与服务器套接字连接时出现问题

来自分类Dev

如何使客户端套接字等待服务器套接字

来自分类Dev

如何使用客户端套接字作为服务器套接字python

来自分类Dev

无法从Java套接字服务器接收数据到C套接字客户端

来自分类Dev

如何使服务器套接字广播到那里,并让客户端套接字检测并连接

来自分类Dev

将输入从C套接字客户端读取到Java套接字服务器

来自分类Dev

PHP客户端套接字与C#套接字服务器的连接

来自分类Dev

Python 2.7.8:套接字-TCP套接字中的客户端服务器数据丢失

来自分类Dev

套接字服务器同时响应来自客户端套接字的多个请求

来自分类Dev

客户端在套接字关闭服务器连接之前,客户端打印一半数据

来自分类Dev

为什么我的客户端套接字输入流没有接收从服务器套接字输出流发送的消息

来自分类Dev

使用套接字在客户端阻止的客户端-服务器通信

来自分类Dev

客户端/服务器/客户端通过套接字通信

来自分类Dev

Java套接字服务器-客户端;卡在服务器端

来自分类Dev

如果服务器打开到端口的连接但客户端没有发送任何东西会发生什么?(Java 服务器套接字)

来自分类Dev

C套接字客户端/服务器pthreads服务器广播

来自分类Dev

C套接字客户端/服务器pthreads服务器广播

来自分类Dev

套接字编程-为什么即使在服务器接受了连接之后,Web服务器仍然使用监听端口80与客户端通信?

Related 相关文章

  1. 1

    Python套接字服务器/客户端编程

  2. 2

    C客户端/服务器套接字错误

  3. 3

    服务器/客户端套接字连接

  4. 4

    套接字编程-简单的客户端/服务器

  5. 5

    客户端js上的套接字服务器?

  6. 6

    Java客户端/服务器套接字问题

  7. 7

    Java TCP 客户端/服务器套接字

  8. 8

    设置客户端套接字和服务器套接字侦听器 (Java)

  9. 9

    服务器套接字接受客户端套接字时,到底发生了什么事情?

  10. 10

    使用Python使客户端套接字等待服务器套接字

  11. 11

    将输入从C套接字客户端读取到Java套接字服务器

  12. 12

    将客户端套接字与服务器套接字连接时出现问题

  13. 13

    如何使客户端套接字等待服务器套接字

  14. 14

    如何使用客户端套接字作为服务器套接字python

  15. 15

    无法从Java套接字服务器接收数据到C套接字客户端

  16. 16

    如何使服务器套接字广播到那里,并让客户端套接字检测并连接

  17. 17

    将输入从C套接字客户端读取到Java套接字服务器

  18. 18

    PHP客户端套接字与C#套接字服务器的连接

  19. 19

    Python 2.7.8:套接字-TCP套接字中的客户端服务器数据丢失

  20. 20

    套接字服务器同时响应来自客户端套接字的多个请求

  21. 21

    客户端在套接字关闭服务器连接之前,客户端打印一半数据

  22. 22

    为什么我的客户端套接字输入流没有接收从服务器套接字输出流发送的消息

  23. 23

    使用套接字在客户端阻止的客户端-服务器通信

  24. 24

    客户端/服务器/客户端通过套接字通信

  25. 25

    Java套接字服务器-客户端;卡在服务器端

  26. 26

    如果服务器打开到端口的连接但客户端没有发送任何东西会发生什么?(Java 服务器套接字)

  27. 27

    C套接字客户端/服务器pthreads服务器广播

  28. 28

    C套接字客户端/服务器pthreads服务器广播

  29. 29

    套接字编程-为什么即使在服务器接受了连接之后,Web服务器仍然使用监听端口80与客户端通信?

热门标签

归档