用java写的聊天室小程序,怎么完成客户端退出?自己写了好久都是错的。 50
publicclassClientextendsJFrame{staticSocketsocket;staticStringusename;staticStringcon...
public class Client extends JFrame { static Socket socket; static String usename; static String content; static boolean b=false; JPanel jp; JTextField jtf; static JTextArea jta; JScrollBar jsb; Server server=new Server(); public Client(Socket s,String name){ this.socket=s; this.usename=name; jp=new JPanel(); jtf=new JTextField(); jta=new JTextArea(80,80); jsb=new JScrollBar(); jtf.setColumns(80); jta.add(jsb); jta.setEditable(false); jp.setLayout(new BorderLayout()); jp.add(BorderLayout.CENTER,jta); jp.add(BorderLayout.SOUTH,jtf); this.add(jp); this.setSize(600, 700);; this.setVisible(true);// this.addWindowListener(new WindowAdapter(){// public void windowClosing(WindowEvent e){// try {// server.sockets.remove(socket);// System.out.println("人数"+Server.sockets.size());// OutputStreamWriter osw=new OutputStreamWriter(socket.getOutputStream());// osw.write(usename+"退出了聊天室");// osw.flush();// b=true;// //osw.close();// //socket.shutdownInput();// //socket.shutdownOutput();// //socket.close();// // // System.exit(0);// } catch (IOException e1) {// // TODO 自动生成的 catch 块// e1.printStackTrace();// }// }// }); jtf.addActionListener(new MyActionListener()); new GetThread(socket).start(); System.out.println("线程启动"); // System.out.println("上线人数"+Server.sockets.size()); } class MyActionListener implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { // TODO 自动生成的方法存根 try { OutputStreamWriter osw= new OutputStreamWriter(socket.getOutputStream()); osw.write(usename+":"+jtf.getText()+"\n"); osw.flush(); jta.append("\n"+usename+":"+jtf.getText()); jtf.setText(""); } catch (IOException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } } } }class GetThread extends Thread{ private Socket socket; public GetThread(Socket s){ this.socket=s; } public void run(){ try { BufferedReader br=new BufferedReader (new InputStreamReader(socket.getInputStream())); System.out.println("获取输入流"); while(true){ Client.content=br.readLine(); System.out.println("将输入流读取到文本"); Client.jta.append("\n"+Client.content); //Client.jta.setText(Client.jta.getText()+"\n"+Client.content); } } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } }
如果我在windowclosing里加一个给server端的消息,并等待响应,之后关闭socket。server端在读取消息后判定,给client一个响应,然后跳出while循环,关闭socket 展开
如果我在windowclosing里加一个给server端的消息,并等待响应,之后关闭socket。server端在读取消息后判定,给client一个响应,然后跳出while循环,关闭socket 展开
2个回答
展开全部
大神,我是路过来膜拜您的,请收下我的膝盖。
更多追问追答
追问
讽刺吗?我刚学不久,别打击我啊!!!
追答
作业4:输入m和n,打印出它们之间所有的素 数?
System.out.println("请输入m:");
int m = in.nextInt();
System.out.println("请输入n:");
int n = in.nextInt();
boolen s = true;
if(m<n){
for(int x = m;x < n;x++){
for(int i = 2;i < x;i++){
if(x%i == 0){
s = false;
break;
}
}
else if(s){
system.out.print(x+" ");
s = true;
}
}
想了一晚上
惨惨惨
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询