java - 如何在此套接字连接中设置超时并将数据发送到客户端?

标签 java android sockets server client-server

我已经获取了手动输入的Socket Ip和端口,现在我想为socket连接设置超时时间。以及如何在下面的代码中向客户端发送数据。

 public void run() {
            try {
                socket = new Socket(eHostIp.getText().toString(), Integer.parseInt( eHostPort.getText().toString() ) );
                socket.connect( );
                //PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
                //out.println("");
                eReceiveData.setText( "Server Connected" );
                //eReceiveData.setText( socket.getInputStream().read() );

                BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream() ), 1024 );
                eReceiveData.setText( "Server Connected... XXXXXXX" );
                String line;
                while ((line = in.readLine()) != null) {
                    Log.d("read line",line);
                    eReceiveData.setText( line );
                    socket.close();
                }

                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    } );
    thread.start();

最佳答案

使用Socket.connect(SocketAddress endpoint, int timeout)指定超时的方法。

为了写入套接字,从中获取输出流(通过 socket.getOutputStream())并写入该输出流。

注意:不要在 while 循环中关闭套接字!关闭后无法写入套接字。

关于java - 如何在此套接字连接中设置超时并将数据发送到客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55449174/

相关文章:

java - RxJava解释这个循环

android - 如何在 Room 中动态创建新表?

android - 访问无线和网络设置页面

javascript - 我怎样才能做客户端到客户端(浏览器)套接字连接?

javascript - 套接字 IO 示例

java - Spring Integration 在有效负载表达式中组合路径变量和发布主体

java - Eclipse 生成 setter

Java:BufferedReader 从 Python 脚本和正则表达式实时读取 self 更新的 shell 输出,每 5 秒更新一次

java - 递归方法要求从 1 到 10 的整数

sockets - 错误 “An established connection was aborted by the software in your host machine”