Java socket 如何让客户端不停的连接服务器端

u011079621 2013-10-17 09:14:17
我需要一直监听一个文件的内容 然后有变化就传给客户端 我就想服务器端监听那个文件 然后让客户端不停的读那个文件
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)
...全文
303 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
u011079621 2013-10-18
  • 打赏
  • 举报
回复
这个问题解决了 如果我关闭客户端程序 怎么使连接断开啊 如果我用窗口 可以当窗口关闭时 调用dis.close 但是我不用窗口 我直接关闭程序 应该怎么断开流和socket
u011079621 2013-10-18
  • 打赏
  • 举报
回复
我用fileinputstream读文件的时候怎么能让他读到文件最后再从头读 用fileoutputStream写入的时候 怎么能让他覆盖之前的内容
sunbo624 2013-10-18
  • 打赏
  • 举报
回复
如果手动点eclipse那个红色按钮 或者结束进程 是没有办法控制的
失落夏天 2013-10-17
  • 打赏
  • 举报
回复
线程里面 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();//处理请求给予返回信息
  }
 }

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧