java 网络编程【6】 用UDP编写网络聊天程序 以及 TCP编程实例
2012-05-02 20:42
971 查看
输入内容后,按回车键即可。
import java.awt.BorderLayout; import java.awt.Frame; import java.awt.List; import java.awt.Panel; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.IOException; import java.net.*; @SuppressWarnings("serial") public class Chat extends Frame { List lst = new List(6); TextField tfIP = new TextField(15); // 消息文本框 TextField tfData = new TextField(20); // 利用网络来发送消息。 DatagramSocket ds = null; public Chat() { try { // 端口为3000. ds = new DatagramSocket(3000); } catch (SocketException e1) { e1.printStackTrace(); } this.add(lst, "Center"); Panel p = new Panel(); this.add(p, "South"); p.setLayout(new BorderLayout()); p.add(tfIP, "West"); p.add(tfData, "East"); /** * * 用于接收 消息。 * */ new Thread(new Runnable() { @Override public void run() { byte buf[] = new byte[1024]; // DatagramPacket 用于 接收到的消息 并存入 buf中。 DatagramPacket dp = new DatagramPacket(buf, 1024); while (true) { try { ds.receive(dp); // 接受消息。 lst.add(new String(/* dp.getData() */buf, 0, dp .getLength()) + "from" + dp.getAddress().getHostAddress() + ":" + dp.getPort(), 0); } catch (IOException e) { if(!ds.isClosed()){// 用于判断 Socket 是否已经关闭了。 e.printStackTrace(); } } } } }).start(); // 匿名内置类。----------消息文本框的事件处理代码!!! // 监听器。 tfData.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { byte buf[]; buf = tfData.getText().getBytes(); try { DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName(tfIP.getText()), 3000); // 发送消息。。 ds.send(dp); } catch (UnknownHostException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } // 清除消息文本的内容。 tfData.setText(""); } }); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { ds.close(); dispose(); System.exit(0); } }); } public static void main(String[] args) { System.out.println("Strating Chat..."); Chat mainFrame = new Chat(); mainFrame.setSize(300, 400); mainFrame.setTitle("Chat"); mainFrame.setVisible(true); mainFrame.setResizable(false);// 窗口的大小不可变。 } }
java.io
类 PrintWriter
java.lang.Object java.io.Writer java.io.PrintWriter
所有已实现的接口: Closeable,
Flushable, Appendable
public class PrintWriterextends Writer
向文本输出流打印对象的格式化表示形式。此类实现在
PrintStream中的所有print 方法。它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。
与
PrintStream类不同,如果启用了自动刷新,则只有在调用println、printf 或format 的其中一个方法时才可能完成此操作,而不是每当正好输出换行符时才完成。这些方法使用平台自有的行分隔符概念,而不是换行符。
此类中的方法不会抛出 I/O 异常,尽管其某些构造方法可能抛出异常。客户端可能会查询调用
checkError()是否出现错误。
PrintWriter
public PrintWriter(Writer out)
创建不带自动行刷新的新 PrintWriter。
参数:
out- 字符输出流
PrintWriter
public PrintWriter(Writer out, boolean autoFlush)
创建新 PrintWriter。
参数:
out- 字符输出流
autoFlush- boolean 变量;如果为 true,则 println、printf 或format 方法将刷新输出缓冲区
PrintWriter
public PrintWriter(OutputStream out)
根据现有的 OutputStream 创建不带自动行刷新的新 PrintWriter。此便捷构造方法创建必要的中间 OutputStreamWriter,后者使用默认字符编码将字符转换为字节。
参数:
out- 输出流另请参见:
OutputStreamWriter.OutputStreamWriter(java.io.OutputStream)
PrintWriter
public PrintWriter(OutputStream out, boolean autoFlush)
通过现有的 OutputStream 创建新的 PrintWriter。此便捷构造方法创建必要的中间 OutputStreamWriter,后者使用默认字符编码将字符转换为字节。
参数:
out- 输出流
autoFlush- boolean 变量;如果为 true,则 println、printf 或format 方法将刷新输出缓冲区另请参见:
OutputStreamWriter.OutputStreamWriter(java.io.OutputStream)
相关文章推荐
- Java基础---Java---网络编程---TCP的传输、客户端和服务端的互访、建立一个文本转换器、编写一个聊天程序
- Java基础---Java---网络编程---TCP的传输、客户端和服务端的互访、建立一个文本转换器、编写一个聊天程序
- 【Java网络编程】UDP协议实例——简单的在线聊天程序
- 网络编程与多线程的应用--基于socket udp编写一个简单聊天程序
- JAVA基础 day25 网络编程 IP类 UDP,TCP传输学习 简易聊天工具 TCP并发学习
- Java网络编程实例---------------------------------TCP和UDP发送数据统计
- 黑马程序员_Java基础_网络编程_UDP传输协议编程,控制台聊天程序
- java网络编程之Tcp协议下的聊天小程序
- java学习之利用UDP编写网络聊天程序
- Java 网络编程之 (UDP网络聊天程序)
- Java网络编程(UDP协议-聊天程序)
- JAVA 网络编程 UDP(聊天程序)
- Java网络编程以及简单的聊天程序
- Java基础---Java---网络编程---TCP、UDP、UDP-键盘录入方式数据、Socket、TCP复制文件、UDP-聊天
- Java网络编程以及简单的聊天程序
- Java基础---Java---网络编程---TCP、UDP、UDP-键盘录入方式数据、Socket、TCP复制文件、UDP-聊天
- java 网络编程 [网络传输] [协议] [UDP与TCP] [套接字] [URL与URI]
- java 聊天程序 socket网络编程
- 用java编写简单UDP网络通信程序
- JAVA中TCP/UDP编程实例