java - 如何在此套接字连接中设置超时并将数据发送到客户端?
问题描述
我已经获取了手动输入的 Socket Ip 和端口,现在我想为套接字连接设置超时。以及如何在下面的代码中向客户端发送数据。
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 循环中关闭套接字!关闭套接字后,您无法写入套接字。
推荐阅读
- angular - Angular中十进制验证器的单元测试
- javascript - 通过更新数据结构重新渲染动态创建的组件
- javascript - TypeError:无法读取 null 的属性“tagName”?
- javascript - 如何解决在 django 中显示 ajax 搜索结果的问题?
- api - SkillFuture Grand Calculator 个人 API
- python - 如何在 sqlite 中创建复杂的聚合函数
- tinymce-5 - TinyMCE - 媒体插件 - 想在最后添加源链接
- css - 如何使文本转到下一行而不是被剪切
- css - Jumbotron 没有显示为灰色
- elasticsearch - Elasticsearch 处理程序错误 Elasticsearch 拒绝了数据