韩顺平java视频---简单版QQ

2024-08-23 10:38
文章标签 java 简单 视频 qq 顺平

本文主要是介绍韩顺平java视频---简单版QQ,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/*
 *服务器端
 *作者:杨鑫
 *日期:20140629
 * */
package com.test1;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.io.*;
import java.net.*;
public class MyServer3 extends JFrame implements ActionListener{
JTextArea jta=null;
JTextField jtf=null;
JButton jb=null;
JPanel jp1=null;
JScrollPane jsp=null;
//把信息发给客户端的对象
PrintWriter pw=null;
public MyServer3()
{
jta=new JTextArea();
jtf=new JTextField(10);
jb=new JButton("发送");
jb.addActionListener(this);
jsp=new JScrollPane(jta);
jp1=new JPanel();
jp1.add(jtf);
jp1.add(jb);
this.add(jta,"Center");
this.add(jp1,"South");
this.setSize(400,300);
this.setTitle("QQ简易聊天   服务器");
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//服务器监听
try
{
//服务器监听
ServerSocket ss=new ServerSocket(9988);
//等待客户端连接
Socket s=ss.accept();
//读取信息
InputStreamReader isr=new InputStreamReader(s.getInputStream());
BufferedReader br=new BufferedReader(isr);

pw=new PrintWriter(s.getOutputStream(),true);

//从读取客户端发过来的消息
while(true)
{
//读取从客户端发来的信息
String info=br.readLine();
jta.append("客户端:   "+info+"\r\n");
}
}catch(Exception e)
{
e.printStackTrace();
}

}


public static void main(String[] args)
{
MyServer3 myse=new MyServer3();

}
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
//如果用户按下发送信息的按钮
if(e.getSource()==jb)
{
String info=jtf.getText();
jta.append("服务器:   "+info+"\r\n");
pw.println(info);
//清空内容
jtf.setText("");


}

}

}





/*
 *服务器端
 *作者:杨鑫
 *日期:20140628
 * */
package com.test1;
import java.net.*;
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MyClient3 extends JFrame implements ActionListener{
JTextArea jta=null;
JTextField jtf=null;
JButton jb=null;
JPanel jp1=null;
JScrollPane jsp=null;
PrintWriter pw=null;
public MyClient3()
{
jta=new JTextArea();
jtf=new JTextField(10);
jb=new JButton("发送");
jb.addActionListener(this);
jsp=new JScrollPane(jta);
jp1=new JPanel();
jp1.add(jtf);
jp1.add(jb);
this.add(jta,"Center");
this.add(jp1,"South");
this.setSize(400,300);
this.setTitle("QQ简易聊天   客户端");
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try
{
Socket s=new Socket("127.0.0.1",9988);
InputStreamReader isr=new InputStreamReader(s.getInputStream());
BufferedReader br=new BufferedReader(isr);

pw=new PrintWriter(s.getOutputStream(),true);
//不停的读取
while(true)
{
String info=br.readLine();
jta.append("服务器:   "+info+"\r\n");

}

}catch(Exception e)
{
e.printStackTrace();
}
}



public static void main(String[] args) {
// TODO 自动生成的方法存根
MyClient3 mycl=new MyClient3();
}




@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
if(e.getSource()==jb)
{
String info=jtf.getText();
//把客户端发送的显示出来
jta.append("客户端:   "+info+ "\r\n");
pw.println(info);
}
}


}

这篇关于韩顺平java视频---简单版QQ的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1099147

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个