代码如下
abstract class Dongwu {
void chi(){
System.out.println("吃");
}
interface Tiao{
void tiao();
interface Suan{
void suan();
class Mao extends Dongwu implements Tiao{
public void tiao() {
System.out.println("猫会跳高");
class Gou extends Dongwu implements Suan{
public void suan() {
System.out.println("狗会算数");
①各种管理系统
jsp开发完整的博研图书馆后台管理系统,不使用框架开发的,太完美了
javaWeb图书馆管理系统源码mysql版本
GitHub - uboger/LibraryManager: JAVA GUI 图书馆管理系统
java swing开发网络聊天室群聊系统,基于java多线程socket编程
java swing开发大猫聊天室源码,简单易懂,适合java swing初学者
java websocket开发简单聊天室系统,实现群聊与一对一单人聊天案例
jsp开发简单聊天室demo-分享
java通讯录实现了添加删除和查找功能
JAVA版通讯录管理系统课程设计源码
Java Swing界面.完美设计通讯录..有需要的下
俄罗斯方块 JAVA版
GitHub - FieldSoft-HelloClyde/Tetris-Swing: Swing编写的俄罗斯方块
java swing开发的俄罗斯方块游戏,包含完整代码+详细注释
Java实践(十一)——五子棋
java swing开发的五子棋小游戏源码
Java五子棋算法和代码
java贪吃蛇源代码 、 java贪吃蛇源代码
好了,全部的总结出来的简单的练手项目,希望对你有帮助
DMS采集端的主要任务是采集、解析、匹配和保存并发送登录数据.
DMS采集端程序采集、解析获得数据后,将处理好的数据发送到DMS服务器端.
DMS服务器端接收到日志数据,将日志数据备份保存为文件数据,并存入数据库.
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
public class Client extends JFrame
{
/**
*
*/
Container con=null;
JTextArea jta = null;
JTextField jtf = null;
//ArrayList al = new ArrayList();
//ServerSocket ss = null;
Socket s = null;
Client(String ip,int port)
try
s = new Socket(ip,port); //创建一个流套接字并将其连接到指定 IP 地址的指定端口号.
launchFrame();
catch(Exception e)
e.printStackTrace();
new Thread(new ClientR()).start();
public void sent(String str)
{ //发送消息方法
DataOutputStream dos = new DataOutputStream(s.getOutputStream()); // 创建一个新的数据输出流,将数据写入指定 返回s的套接字的输出流.
dos.writeUTF(str);
public void disconnect() throws Exception
s.close(); //失去连接,关闭线程s
class ClientR implements Runnable
/*Runnable 接口应该由那些打算通过某一线程执行其实例的类来实现.类必须定义一个称为 run 的无参数方法.
设计该接口的目的是为希望在活动时执行代码的对象提供一个公共协议.例如,Thread 类实现了 Runnable.
激活的意思是说某个线程已启动并且尚未停止.
此外,Runnable 为非 Thread 子类的类提供了一种激活方式.
通过实例化某个 Thread 实例并将自身作为运行目标,就可以运行实现 Runnable 的类而无需创建 Thread 的子类.
大多数情况下,如果只想重写 run() 方法,而不重写其他 Thread 方法,那么应使用 Runnable 接口.这很重要,
因为除非程序员打算修改或增强类的基本行为,否则不应为该类创建子类.
public void run()
DataInputStream dis = new DataInputStream(s.getInputStream());//使用指定的底层 s.getInputStream(s的套接字的输入流) 创建一个 DataInputStream(数据输入流)
String str = dis.readUTF();
while(true)
jta.append(str+"\n");
str = dis.readUTF();
public void startClient()
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //读取数据流
String str = br.readLine();
System.out.println(str);
sent(str); //发送数据
if(str.equals("q"))
{ //如果读取的字符为q
disconnect(); //断开连接
return ;
str=br.readLine();
public void launchFrame() throws IOException
con = this.getContentPane();
jta = new JTextArea();
jtf = new JTextField();
final JTextField jtf1=new JTextField(10);
final JButton jb=new JButton("确认");
Panel p=new Panel();
//Panel p1=new Panel();
JLabel jl=new JLabel();
jl.setText("your name:");
//jl.getVerticalTextPosition();
jtf1.setBackground(Color.PINK);
jtf1.setBounds(10, 10, 10, 10);
p.add(jl);
p.add(jtf1);
p.add(jb);
jb.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
//e.getWhen();
e.getActionCommand();
jtf.setText(jtf1.getText().toString()+"say:");
});
jta.setBackground(Color.LIGHT_GRAY);
JScrollPane jsp = new JScrollPane(jta, //jta上滚动条的创建
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
//con.add(jb,BorderLayout.WEST);
con.add(jsp,BorderLayout.CENTER);
con.add(p,BorderLayout.NORTH);
con.add(jtf,BorderLayout.SOUTH);
jtf.addActionListener(new ActionListener()
{ ///事件监听
String str = jtf.getText().toString();
Client.this.sent(str);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setBackground(Color.blue);
this.setVisible(true);
public static void main (String[] args)
System.out.println("===1");
//
//import java.net.*;
//import java.io.*;
///*
// 发送给服务器端
//*/
//class Send implements Runnable
//{
// private Socket socket;
// Send(Socket socket)
// {
// this.socket = socket;
// }
// public void run()
// try
// {
// BufferedReader bufr =
// new BufferedReader(new InputStreamReader(System.in));
// String line = null;
// while((line=bufr.readLine())!=null)
// {
// {
// socket.close();
// break;
// }
// byte[] bufString = line.getBytes();
// //通过socket对象获取socket流中的输出流对象.
// OutputStream out = socket.getOutputStream();
// out.write(bufString);
// InputStream in = socket.getInputStream();
// int num = in.read(buf);
// String str = new String(buf,0,num);
// System.out.println("server:"+str);
// }
// }
// catch (Exception e)
// System.out.println(e.toString());
//}
// 建立服务器
//class Rece implements Runnable
// private ServerSocket serverSocket;
// Rece(ServerSocket serverSocket)
// this.serverSocket = serverSocket;
// while(true){
// Socket socket = serverSocket.accept();
// String ip = socket.getInetAddress().getHostAddress();
// System.out.println(ip+"...connected");
// BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// String line ="";
// out.write("开始".getBytes());
// while((line= in.readLine())!=null){
// System.out.println(line);
//class ChatDemoServer
// public static void main(String[] args) throws Exception
// System.out.println("========1");
// rece.close();
// new Thread(new Rece(rece)).start();
//class ChatClient
// if(send == null){
// System.out.println("【创建Socket失败!】");
// return;
// }
// new Thread(new Send(send)).start();
import java.util.*;
//import java.awt.event.*;
public class Server extends JFrame
* 套接字接口可分为三类:公认端口 注册端口 动态和/或私有端口
套接字,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程
Container con = null; //容器
JTextArea jta = null; //文本区
ServerSocket ss = null; //初始化服务器套接字
ArrayList al = new ArrayList();//ArrayList容器
Server(int port)
{ //构造函数
ss=new ServerSocket(port); // 创建绑定到特定端口的服务器套接字.
public void severStart()
{ //线程开始
try{
Socket s = ss.accept(); //侦听并接受到此套接字(port)的连接.
al.add(new ServerR(s));
+"Clients count:"+al.size()+"\n");
class ServerR implements Runnable
Socket s = null; //创建新服务线程
ServerR(Socket s)
this.s = s;
new Thread(this).start();//启动新线程
{ //发送数据流方法
DataOutputStream dos = new DataOutputStream(s.getOutputStream()); //从s套接字中读出输出数据流
DataInputStream dis = new DataInputStream(s.getInputStream());
String str = dis.readUTF(); //读出输入的数据流
// System.out.println (str);
Iterator ite = al.iterator(); //生成list迭代器
while(ite.hasNext())
{ //如果仍有可迭代的元素,返回true
((ServerR)ite.next()).sent(str); //返回(ServerR)的下一个元素,并发送它
//先遍历ServerR中的所有线程
str=dis.readUTF();
al.remove(this); //从迭代器指向的集合中移除迭代器返回的最后一个元素
public void launchFrame()
{ //服务器端面板布局
JScrollPane jsp = new JScrollPane(jta,
this.setTitle("聊天服务端,袭风版");
s.severStart();
以上就是土嘎嘎小编大虾米为大家整理的相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!