JAVA网络编程技术 - UDP练习,模仿多线程聊天室
2013-10-27 17:35
344 查看
今天学习了网络编程技术,了解了一些基本知识,知道什么是 UDP了。
跟着视频学啊学,反复看,做出来了第一个小例子。贴上代码,上面有我的注释,清晰的标明了整个过程的来龙去脉。稍后我学完整个网络编程技术的所有视频后我再贴上来我整理的一些资料。这里先记录下第一个小例子。
主函数
跟着视频学啊学,反复看,做出来了第一个小例子。贴上代码,上面有我的注释,清晰的标明了整个过程的来龙去脉。稍后我学完整个网络编程技术的所有视频后我再贴上来我整理的一些资料。这里先记录下第一个小例子。
// 发送类 class SendMsg implements Runnable { private DatagramSocket ds; // 指定一个对象 public SendMsg(DatagramSocket ds) { super(); this.ds = ds; } @Override public void run() { // TODO Auto-generated method stub // 数据来源 BufferedReader bufr = new BufferedReader(new InputStreamReader( System.in)); String line = null; byte[] buf = new byte[1024]; try { while ((line = bufr.readLine()) != null) { buf = line.getBytes(); // 拿到的数据进行字节拆分 DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.1.104"), 10002);// 数据进行封包 ds.send(dp); if ("over".equals(line)) { break; } } ds.close(); // 结束输入端对象 } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
// 接收对象 class ReveMsg implements Runnable { private DatagramSocket ds;// 建立接收端对象 public ReveMsg(DatagramSocket ds) { super(); this.ds = ds; } @Override public void run() { // TODO Auto-generated method stub while (true) { byte[] buf = new byte[1024]; // 建立一个接收容器 DatagramPacket dp = new DatagramPacket(buf, 1024);// 接收数据存放到哪里,以及每次能接收多少 try { ds.receive(dp); // 接收对象 String str = new String(dp.getData(), 0, dp.getLength()); String ip = dp.getAddress().getHostAddress(); int post = dp.getPort(); System.out.println(ip + "-" + post + " : " + str); if(str.equals("over")){ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 System.out.println(ip + "-" + post + " : " + "离开了聊天室,"+df.format(new Date())); } } catch (IOException e) { e.printStackTrace(); } } } }
主函数
package socket.chat; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.text.SimpleDateFormat; import java.util.Date; public class UdpChat { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub DatagramSocket send = new DatagramSocket(); DatagramSocket reve = new DatagramSocket(10002);// 接收端要指定端口了,要不对象不知道去哪里接收数据 new Thread(new SendMsg(send)).start(); new Thread(new ReveMsg(reve)).start(); } }
相关文章推荐
- 网络编程UDP多线程聊天室
- {网络编程}和{多线程}应用:基于UDP协议【实现多发送方发送数据到同一个接收者】--练习
- Java基础知识强化之网络编程笔记05:UDP之多线程实现聊天室案例
- UDP多线程聊天室
- udp多线程实现聊天室
- 多线程练习--顺序打印ABC十次
- 多线程练习题目--利用多线程打印数字
- QT基于UDP通信的多线程编程问题
- Linux C 网络编程——多线程的聊天室实现(服务器端)
- 多线程及聊天室程序
- Android-Socket多线程应用(聊天室客户端、Handler的简单使用)
- tcp和udp多线程的epoll服务器+客户端源代码
- 网络编程 UDP通信的过程 TCP通信过程 多线程文件上传
- 练习生产者与消费者-PYTHON多线程中的条件变量同步-Queue
- Linux基础练习_多线程
- 黑马程序员——Java练习笔记——多线程
- 孙鑫lesson15 多线程与聊天室
- 多线程socket UDP收发数据
- 命令行界面的C/S聊天室应用 (Socket多线程实现)
- 网络编程应用:基于UDP协议【实现文件下载】--练习