Java简单聊天室第一个版本
来源:互联网 发布:仙剑奇侠传四结局 知乎 编辑:程序博客网 时间:2024/06/05 23:35
客户端代码:
package chat;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.DataOutputStream;import java.io.IOException;import java.io.OutputStream;import java.net.Socket;import java.net.UnknownHostException;public class chatClient extends Frame { TextField tf = new TextField(); TextArea ta = new TextArea(); Socket client = null; OutputStream out = null; DataOutputStream dout = null; public static void main(String[] args) { chatClient chatF= new chatClient(); chatF.launchFrame(); } private void launchFrame() { setLocation(300,400); // 左、上距离 this.setSize(300,500); // 宽度,高度 add(tf,BorderLayout.SOUTH); add(ta,BorderLayout.NORTH); pack(); // 覆盖Textarea和textfield空白处 close(); //关闭窗口 tf.addActionListener(new TfListener()); // 注册监听器 setVisible(true); connectServer(); // 连接服务器 } // 连接服务器 private void connectServer() { try { client = new Socket("127.0.0.1",10000); out = client.getOutputStream(); dout = new DataOutputStream(out); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //关闭窗口 private void close() { this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { unconnect(); System.exit(0); } }); } //在关闭窗口的时候,关闭连接 public void unconnect(){ try { dout.flush(); dout.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //监听从tf的文本到ta当中。 private class TfListener implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { String str = tf.getText().trim(); ta.setText(str); tf.setText(""); try { dout.writeUTF(str); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }}
server端代码:
package chat;import java.io.DataInputStream;import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;/* * 1)客户端发送消息,服务器可以接收了。 * 下一个版本要解决的:该版本存在客户端发送多条消息,服务器接收不到。 * 原因是第一次运行完之后,while(true)执行到socket.accept();阻塞主了,无法执行, dinput.readUTF(); * 解决办法:将socket.accept();移动到while语句外面。 */public class chatServer { public static void main(String[] args) { ServerSocket socket = null; Socket s = null; InputStream input = null; DataInputStream dinput = null; try{ socket = new ServerSocket(10000); while(true){ s= socket.accept(); System.out.println("this is a server"); input = s.getInputStream(); dinput = new DataInputStream(input); // String str = dinput.readUTF(); System.out.println(str); } }catch (IOException e){ try { dinput.close(); input.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } e.printStackTrace(); } }}
0 0
- Java简单聊天室第一个版本
- 第一个PWA程序-聊天室
- 聊天室开发【java版本】
- 用JAVA写个简单的聊天室-单人版
- java实现网络爬虫第一个版本
- 简单的java聊天室
- java简单聊天室
- java简单的聊天室
- 简单聊天室(java版)
- java实现简单聊天室
- java简单聊天室
- 第一个简单的JAVA程序
- 第一个简单的JAVA程序HelloWorld
- Java第一个简单的程序
- regex 第一个版本
- websocket聊天室,简单版本,基于swoole
- java的简单聊天室程序
- 一个简单的java聊天室
- RxPresenter浅析
- 动态代理详解(二)原理解析
- #51 C. Pie or die (博弈)
- java jsonpath 修改指定路径的值
- iOS单元测试
- Java简单聊天室第一个版本
- CPP复习笔记 3
- 【数据结构】求K阶斐波那契数列
- Nginx SSL+tomcat集群,request.getScheme() 取到https正确的协议详解
- 滑雪
- {小结}2017.04.15【NOIP2017提高组】模拟赛B组
- android/support/v4/text/TextUtilsCompat.class异常
- hadoop集群安装
- 腾讯课堂IMWeb小白(Day1)