JavaCore Socket+GUI

Socket -> 套接字

        CS架构        C = client = 客户端        S = Server = 服务器

        BS架构        B = Browser = 浏览器         S = Server = 服务器

import java.net.*;
import java.io.*;
import javax.swing.*;
public class Client01{
	public static void main(String[] args)throws Exception{
		while(true){
			String str = JOptionPane.showInputDialog(null,"请输入内容");
			if("88".equals(str)){
				break;
			}
			Socket skt = new Socket("192.168.31.236",12666);
			OutputStream os = skt.getOutputStream();
			PrintWriter pw = new PrintWriter(os,true);
			pw.println(str);
			pw.close();
			skt.close();

		}
	}
}
import java.net.*;
import java.io.*;
public class Client02{
	public static void main(String[] args)throws Exception{
		Socket skt = new Socket("192.168.31.236",12345);
		InputStream is = skt.getInputStream();
		FileOutputStream fos = new FileOutputStream("jay.png");
		byte[] data = new byte[65536];
		int len;
		while((len = is.read(data))!=-1){
			fos.write(data,0,len);
		}
		fos.close();
		is.close();
		skt.close();
	}


}
import java.net.*;
import java.io.*;
import javax.swing.*;
public class Client03{
	public static void main(String[] args)throws Exception{
		String name = JOptionPane.showInputDialog(null,"请输入姓名 : ");
		Socket skt = new Socket("192.168.31.236",17666);
		OutputStream os = skt.getOutputStream();
		PrintWriter pw = new PrintWriter(os,true);
		pw.println(name);
		InputStream is = skt.getInputStream();
		InputStreamReader r = new InputStreamReader(is);
		BufferedReader br = new BufferedReader(r);
		String result = br.readLine();
		JOptionPane.showMessageDialog(null,result);
		br.close();
		pw.close();
		skt.close();
	}
}
import java.net.*;
import java.io.*;
import javax.swing.*;
public class Client04{
	public static void main(String[] args)throws Exception{
		String username = JOptionPane.showInputDialog(null,"请输入用户名 :");
		String password = JOptionPane.showInputDialog(null,"请输入密码 :");
		if(username == null || password ==null || username.trim().length() == 0 || password.trim().length() == 0){
			JOptionPane.showMessageDialog(null,"手呢?!");
			return;
		}

		Socket skt = new Socket("192.168.31.236",12666);
		PrintWriter pw = new PrintWriter(skt.getOutputStream(),true);
		pw.println(username);
		pw.println(password);

		DataInputStream dis = new DataInputStream(skt.getInputStream());
		int result = dis.readInt();
		dis.close();
		pw.close();
		skt.close();
		if(result == 0){
			JOptionPane.showMessageDialog(null,"登陆成功 欢迎回来");
		}else if(result == 1){
			JOptionPane.showMessageDialog(null,"不是老周不让登录");
		}else if(result == 2){
			JOptionPane.showMessageDialog(null,"不了解老周不让登录");
		}
	}
}
import java.net.*;
import java.io.*;
import java.util.*;
public class Server01{
	public static void main(String[] args)throws Exception{
		ServerSocket server = new ServerSocket(12666);//避让前1024
		boolean isRunning = true;
		while(isRunning){
			Socket skt = server.accept();
			ServerThread st = new ServerThread(skt);
			st.start();
		}
		server.close();
	}
}
class X{
	static Set<String> ipSet = new HashSet<>();
	static List<String> badWords  = new ArrayList<>();
	static{
		badWords.add("老大");
		badWords.add("娘");
	}
}
class ServerThread extends Thread{
	Socket skt;
	public ServerThread(Socket skt){
		this.skt = skt;
	}
	@Override
	public void run(){
		try{
			InputStream is = skt.getInputStream();
			InputStreamReader r = new InputStreamReader(is);
			BufferedReader br = new BufferedReader(r);
			String str = br.readLine();
			String ip = skt.getInetAddress().toString();
			X.ipSet.add(ip);
			boolean isShow = true;
			for(String word : X.badWords){
				if(str.contains(word)){
					isShow = false;
				}
			}
			if(isShow){
				System.out.println(ip + " : " + str + " " + X.ipSet.size()+"/55");
			}else{
				System.out.println(ip + ": 它承认它没做好事");
			}
			br.close();
			skt.close();

		}catch(Exception e ){
			e.printStackTrace();
		}
	}
}
import java.io.*;
import java.net.*;
import java.util.concurrent.*;
public class Server02{
	public static void main(String[] args)throws Exception{
		ExecutorService es = Executors.newCachedThreadPool();
		ServerSocket server = new ServerSocket(12345);
		boolean isRunning = true;
		while(isRunning){
			Socket skt = server.accept();
			ServerThread st = new ServerThread(skt);
			es.submit(st);
		}
		server.close();
		es.shutdown();
	}
}
class ServerThread implements Runnable{
	Socket skt;
	public ServerThread(Socket skt){
		this.skt = skt;
	}
	@Override
	public void run(){
		try{
			FileInputStream fis = new FileInputStream("jay.png");
			OutputStream os = skt.getOutputStream();
			byte[] data = new byte[65536];
			int len;
			while((len = fis.read(data))!=-1){
				os.write(data,0,len);
			}
			os.close();
			fis.close();
			skt.close();
			System.out.println(skt.getInetAddress()+"已经下载完成");
		}catch(Exception e){
			e.printStackTrace();
			System.out.println(skt.getInetAddress() + "是我就是我");
		}
	}
}
import java.net.*;
import java.io.*;
import java.util.concurrent.*;

public class Server03{
	public static void main(String[] args)throws Exception{
		ExecutorService es = Executors.newFixedThreadPool(5);
		ServerSocket server = new ServerSocket(17666);
		boolean isRunning = true;
		while(isRunning){
			Socket skt = server.accept();
			ServerThread st = new ServerThread(skt);
			es.submit(st);
		}
		server.close();
		es.shutdown();
	}
}
class ServerThread implements Callable<String>{
	Socket skt;
	public ServerThread(Socket skt){
		this.skt = skt;
	}
	@Override
	public String call()throws Exception{
		//接收
		InputStream is = skt.getInputStream();
		InputStreamReader r = new InputStreamReader(is);
		BufferedReader br = new BufferedReader(r);
		String name = br.readLine();
		//处理
		String result = X.get(name);
		//发
		OutputStream os = skt.getOutputStream();
		PrintWriter pw = new PrintWriter(os,true);
		pw.println(result);
		pw.close();
		br.close();
		skt.close();
		System.out.println(skt.getInetAddress() + " -> " + name +"->" + result);
		return null;
	}
}
class X{
	public static String get(String name){
		if(name.contains("蔡")||name.contains("徐")||name.contains("坤")){
			return "小黑子露出鸡脚来了吧";
		}

	}
}
import java.net.*;
import java.io.*;
import java.util.concurrent.*;
public class TestServer04{
	public static void main(String[] args)throws Exception{
		ExecutorService es = Executors.newCachedThreadPool();
		ServerSocket server = new ServerSocket(12666);
		boolean isRunning = true;
		while(isRunning){
			Socket skt = server.accept();
			ServerThread st = new ServerThread(skt);
			es.submit(st);
		}
		server.close();
		es.shutdown();
	}
}
class ServerThread extends Thread{
	Socket skt;
	public ServerThread(Socket skt){
		this.skt = skt;
	}
	@Override
	public void run(){
		try{
			InputStream is = skt.getInputStream();
			InputStreamReader r = new InputStreamReader(is);
			BufferedReader br = new BufferedReader(r);
			String username = br.readLine();
			String password = br.readLine();

			int result = -1;
			if("JayZhou".equals(username)){
				if("942942".equals(password)){
					result = 0;//登录成功
				}else{
					result = 2;//不了解老周不让登录(密码错误)
				}
			}else{
				result = 1;//不是老周不让登录(用户名错误)
			}

			OutputStream os = skt.getOutputStream();
			DataOutputStream dos = new DataOutputStream(os);
			dos.writeInt(result);

			dos.close();
			br.close();
			skt.close();
			System.out.println(skt.getInetAddress() + " -> "+ username + " : " + password +" -> " + result);

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

GUI  Graphical User Interface

java.awt.*;                重量级组件包 Button

javax.swing.*;          轻量级组件包 JButton

常见的6个步骤:

1.选择容器和组件                

        组件:界面上能够看到的每一个物体都被称之为一个 组件         Component

        容器:一旦一个组件当中能够添加其他的组件        Container

        常用的容器:JFrame        JPanel

        常用的组件:

JButton        JTextField        JTextArea        JPasswordField        JLable        JMenuBar        JMenu        JMenuItem

2.初始化容器和组件

        new    new    new    (必然要了解每个类型的构造方法)

3.选择布局管理器

        阵型   队列

a>   BorderLayout -> 边框布局        它是JFrame的默认布局

        它将容器的可视范围分割为东西南北中五个区域        每个区域只允许添加一个组件        不尊重 组件原始大小        直接拉伸占满整块区域        如果东西南北四个区域当中有未使用的区域        将直接被中央及其小弟占领

b>  FlowLayout ->流水布局        它是JPanel的默认布局

        按照从左到右顺序依次摆放添加的组件        尊重组件的原始大小        不会拉伸也不会缩放        如果一行摆放不开        则自动换行并且依然居中对齐

c>  GridLayout  ->网格布局        他不是任何容器的默认布局        

        将容器可视范围分割为指定的行数列数的网格        每个单元格只允许添加一个组件        不尊重组件原始大小        直接占满整个单元格        添加按照从左到右自上而下的顺序依次添加

4.将组件添加进容器

        容器.add(组件);

5.添加事件监听器

6.设置窗体属性

        a.设置窗体大小

        b.设置窗体是否可见

        c.设置窗体默认关闭操作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jerry鹿17

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值