java-socket监听输入流怎么关闭

问题描述

socket监听输入流怎么关闭

用java写的,socket连接后另开一个线程实时监听输入流,但是如果服务器那边发生异常中断了,我这边也利用心跳机制知道有异常,需要断掉socket重新连,但是监听输入流的线程就卡在read的那个方法里了,怎么才能从那个read的阻塞里出来呢?

解决方案

不对啊,我理解的是如果服务器端异常中断了,那么你这边连接也会报连接关闭异常的吧。

解决方案二:

给你粘贴一个服务端和客户端的代码你瞅瞅吧
import java.net.*;
import java.io.*;

public class Server{
public static void main(String[] args){

    InputStream in=null;
    OutputStream out=null;
    try{
        ServerSocket ss=new ServerSocket(8888);
        Socket socket=ss.accept();
        in=socket.getInputStream();
        out=socket.getOutputStream();
        DataOutputStream dos=new DataOutputStream(out);
        DataInputStream dis=new DataInputStream(in);
        String s=null;
        if((s=dis.readUTF())!=null){
            System.out.println(s);
        }
        /*
        System.out.println(dis.readUTF())
        */

        String fileContent = readFileContent("E:\LQ.txt");;
        dos.writeUTF(fileContent);
        dis.close();
        dos.close();
        socket.close();
    }catch(IOException e) {
        e.printStackTrace();
    }

 }

private static String readFileContent(String fileName) throws IOException {
    File file = new File(fileName);
    BufferedReader bf = new BufferedReader(new FileReader(file));
    String content = "";
    StringBuilder sb = new StringBuilder();
    while(content != null){
        content = bf.readLine();
        if(content == null){
            break;
        }
        sb.append(content.trim());
    }
    bf.close();
    return sb.toString();
}

}

import java.net.*;
import java.io.*;

public class Client{
public static void main(String[] args){

    InputStream is=null;
    OutputStream os=null;
    try{
        Socket socket=new Socket("localhost",8888);
        is=socket.getInputStream();
        os=socket.getOutputStream();
        DataInputStream dis=new DataInputStream(is);
        DataOutputStream dos=new DataOutputStream(os);
        dos.writeUTF("hello");
        String s=null;
        if((s=dis.readUTF())!=null);
        System.out.println(s);
        dis.close();
        dos.close();
        socket.close();
    }catch(IOException e) {e.printStackTrace();}
}

}

时间: 2024-12-31 02:27:06

java-socket监听输入流怎么关闭的相关文章

求Java一监听0.0.0.0地址的Socket代码,做打洞用,找了半天没找到,谢谢!

问题描述 求Java一监听0.0.0.0地址的Socket代码,找了半天没找到,谢谢!serverSocket=newServerSocket();serverSocket.setReuseAddress(true);serverSocket.bind(newInetSocketAddress(InetAddress.getByName("192.168.1.2"),intPoint));这个监听的是192.168.1.2想搞为0.0.0.0,谢谢!直接绑定的这个能为0.0.0.0,s

我写的socket监听过一段时间就需要重新启动一下程序是什么原因

问题描述 我写的socket监听过一段时间就需要重新启动一下程序是什么原因 private void StartReceive() { string msg = null; IPEndPoint iep = new IPEndPoint(IPAddress.Parse(PublicVariables.BJIP), PublicVariables.PORT); socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, Pr

JAVA键盘监听,错误在哪里

问题描述 JAVA键盘监听,错误在哪里 解决方案 java 键盘监听java 键盘监听Java:键盘全局监听 解决方案二: http://zhidao.baidu.com/question/577201357.html?qbl=relate_question_0 解决方案三: 编译问题,你这个方法调用参数类型是错误的,键盘监听事件的参数是addKeyListener的参数必须是实现KeyListener这个接口的类. 你的mb类型定义的是JPanel,所以会报编译错误.你需要定义一个类实现Key

怎么关掉socket监听

问题描述 环境linuxwas我的web应用部署在was下,有一个socket监听程序,启动时单独起了一个线程去启动socket监听,但是怎么才能在关闭web应用时将socket一起关掉呢?socket的进程是由was管理的,总不能每次重启应用都要把was重启了吧

怎么监听浏览器的关闭

问题描述 怎么才能监听浏览器的关闭.需求----在用户关闭浏览器之后将session关闭.怎么做????? 解决方案 解决方案二:浏览器关闭会调用js的关闭事件,在那里面通过ajax去关闭后台session解决方案三:body的onunload事件解决方案四:body的onunload事件----ajax解决方案五:<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/

使用xmlhttp和Java session监听改善站内消息系统

session|xml 使用xmlhttp和Java session监听改善站内消息系统 bromon 原创  引自:http://www.javaresearch.org/article/showarticle.jsp?column=106&thread=25340 这个题目含有许多需要解释的概念,最容易说明的是"站内消息",这是很多论坛都有的功能,可以通过web向其他的在线用户发送消息,很多用户都使用过.站内消息的第一个好处是大家都不需要安装客户端,你不用知道对方的MSN或

java如何监听打印机的内容

问题描述 java如何监听打印机的内容 需求是这样的,想在打印机打印小票之前捕捉小票内容,然后修改小票内容再打印.跪求大神们提供代码,文档,思路等信息,谢谢了 解决方案 我也想知道啊 哪位大神指点一下 解决方案二: java没法做系统一级的,需要c cpp然后给java调用.

事件处理-新手求教大神,java事件监听问题

问题描述 新手求教大神,java事件监听问题 import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JLabel; public class EventModelDemo implements ActionListener{ JLabel tips=new

监听浏览器标签关闭事件

问题描述 监听浏览器标签关闭事件 如题:当用户注销退出系统时,同时结束会话.但当用户关闭当前标签时, 怎么监听该事件.网上看的window.onbeforeunload只能监听整个浏览器关闭, 而不能监听某一个标签关闭 解决方案 window.onbeforeunload是添加了这个事件的每个页面关闭或者导航到其他页面都会执行的,不单是浏览器关闭 window.onbeforeunload=function(e){ return (e||window.event).returnValue='确认