黑马程序员 ---------- Java 网络基础 基于UDP 模仿QQ
来源:互联网 发布:letstee什么档次知乎 编辑:程序博客网 时间:2024/05/19 17:25
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
使用自己的学习的知识,做点自己喜欢的东西,感悟良多啊。很多事情不是子讲的那么简单的实现。原来,自己不懂的,有的时候一个顿悟就 豁然开朗的感觉的确妙不可言啊。哈哈
不多废话,分享一下我写的仿照的QQ,没有界面,基于Dos 命令行的,也可以用 Eclispe 都行的!
使用方法:先开启 服务端,等待即可。 之后开启 客户端,可以开启多个客户端!
代码如下:
客户端代码:
package stu.love.qq;import java.net.*;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.DatagramSocket;/** * 单项的发送信息,将发送的信息 打印在控制台上。 * 当你在控制台输入 over 的时候,程序结束; * * *//** * * 需求: * 编写一个聊天程序! * 1 接收数据 发送数据 * 这两个部分需要 同时执行! * 就需要用到 多线程技术! * 一个 线程 控制 发送数据,一个线程控制 接受数据! * * 因为 接收和发送 动作是不一致的! * 所以 要定义两个 run() * 而且这两个方法,要封装到 不同的类中! * * * */// 客户端class Client1 implements Runnable{ //成员变量 private DatagramSocket ds; //成员函数 public Client1(DatagramSocket ds) { this.ds = ds; } public void run() { try { BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); String line = null; while((line=bufr.readLine())!= null) {// 接收到到 886 应该是 服务端处理吧!// 在此处直接退出不合适吧! /* if("886".equals(line)) break;*/ // 获取输入的信息 得到 字节码 byte[] buf = line.getBytes();// 将数据封装成 数据报 并指明 IP 和 端口! DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("localhost"),10012); // 发送数据 ds.send(dp); } } catch (Exception e) { throw new RuntimeException("发送端失败!"); // TODO: handle exception } }} public class Clienter { public static void main(String[] args) throws SocketException { DatagramSocket sendSocket = new DatagramSocket(); new Thread(new Client1(sendSocket)).start(); }}
服务端代码:
package stu.love.qq;import java.net.*;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.DatagramSocket;/** * 单项的发送信息,将发送的信息 打印在控制台上。 * 当你在控制台输入 over 的时候,程序结束; * * *//** * * 需求: * 编写一个聊天程序! * 1 接收数据 发送数据 * 这两个部分需要 同时执行! * 就需要用到 多线程技术! * 一个 线程 控制 发送数据,一个线程控制 接受数据! * * 因为 接收和发送 动作是不一致的! * 所以 要定义两个 run() * 而且这两个方法,要封装到 不同的类中! * * * *//*//接收端 服务端 * * 服务 处理 客户端 发送的 数据请求! * */class Server1 implements Runnable{ //成员变量 private DatagramSocket ds = null; //构造函数 public Server1(DatagramSocket ds) { this.ds = ds; } // 线程 public void run() { try { while(true) { byte[] buf = new byte[1024];// 接收数据 DatagramPacket dp = new DatagramPacket(buf,buf.length); //将接收到的数据 存储到 数据报包中! 方便 获取数据!@ ds.receive(dp); //先拿 IP 地址 String ip = dp.getAddress().getHostAddress(); String data = new String(dp.getData(),0,dp.getLength()); // 在服务器断 处理一下 客户端的退处 if(data.contains("over")) { System.out.println(ip+"........"+ "退出登录!"); } System.out.println(ip+"::"+data); } } catch (Exception e) { throw new RuntimeException("接收端失败!"); // TODO: handle exception } }} public class Service { public static void main(String[] args) throws SocketException { DatagramSocket receSocket = new DatagramSocket(10012); new Thread(new Server1(receSocket)).start(); }}
下面是效果图:
----------------------ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
详细请查看:www.itheima.com
0 0
- 黑马程序员 ---------- Java 网络基础 基于UDP 模仿QQ
- 黑马程序员-----java基础-----------网络编程 (udp-接收端)
- 黑马程序员——Java基础->网络编程(UDP)
- 黑马程序员--java基础--网络编程(UDP和TCP)
- 黑马程序员——Java基础---网络编程(UDP编程)
- 黑马程序员-java基础网络编程(UDP)
- 网络编程UDP模仿QQ聊天功能
- 黑马程序员--java网络之udp
- 『黑马程序员』---java--网络编程--网络编程概念+UDP基础
- 黑马程序员--------JAVA基础---------UDP.TCP编程
- 黑马程序员 java UDP DatagramSocket Thread Runnable 模拟qq聊天
- 黑马程序员_毕向东JAVA基础_网络编程(概述&UDP&TCP)
- 黑马程序员《java基础总结(十五)》(网络编程<UDP、TCP>)
- 黑马程序员_java基础(12)网络编程之UDP
- 黑马程序员-UDP网络程序
- 黑马程序员----------UDP网络编程
- 黑马程序员 ---网络编程 UDP
- 黑马程序员-网络编程UDP
- 数据结构之二叉堆
- pcDuino-刷机
- C/C++
- 用户说卡,怎么办
- [MySQL]索引
- 黑马程序员 ---------- Java 网络基础 基于UDP 模仿QQ
- Yii登录验证和全局访问用户ID
- iOS 中定时器的开启和关闭
- strrchr()用法
- web屏蔽右键
- 因此你需要在考虑所有的情况以后给他提供一个最好的方案
- Lambda表达式之Python
- Android是什么 之三-------手机之硬件形态
- MFC工具栏(CToolBar)控件常见操作