我需要一直监听一个文件的内容 然后有变化就传给客户端 我就想服务器端监听那个文件 然后让客户端不停的读那个文件
import java.net.*;
import java.io.*;public class ChatClient {
public static void main(String[] args) throws Exception {
while (true){
Socket s = new Socket("localhost", 8888); DataInputStream dis = new DataInputStream(s.getInputStream());
//Thread.sleep(3000);

System.out.println(dis.readUTF());

dis.close();
s.close();
}
}
}
import java.net.*;
import java.io.*;public class CharServer {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(8888);
Socket s = ss.accept();
System.out.println("a client connect!");
FileInputStream fis = new FileInputStream("d:\\1.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
String str = br.readLine(); dos.writeUTF(str); dos.close();
br.close();
fis.close();
s.close();
}}但是客户端有错误Exception in thread "main" java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at java.io.DataInputStream.readUnsignedShort(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
at ChatClient.main(ChatClient.java:12)

解决方案 »

  1.   

    线程里面
    while(true){
    //访问服务端的代码
    }
    你光看了客户端的报错,你有没有看看服务端的显示呢?你客户端确实一直发送请求,但是服务端那样写只是会运行一次的。
    服务端一样需要while(true){
    }
    ServerSocket server=new ServerSocket(8888);//绑定端口
      while(true)
      {
       Socket client=server.accept();//监听
       ChildTh child=new ChildTh(client);
       Thread t=new Thread(child);
       t.start();//处理请求给予返回信息
      }
     }
      

  2.   

    这个问题解决了 如果我关闭客户端程序 怎么使连接断开啊 如果我用窗口 可以当窗口关闭时 调用dis.close 但是我不用窗口 我直接关闭程序 应该怎么断开流和socket
      

  3.   

    如果手动点eclipse那个红色按钮  或者结束进程  是没有办法控制的
      

  4.   

    我用fileinputstream读文件的时候怎么能让他读到文件最后再从头读 用fileoutputStream写入的时候 怎么能让他覆盖之前的内容