admin管理员组文章数量:1434889
【C/S】
import java.net.*;
import java.io.*;
import java.util.*;
public class TestServer01{// 服务器端 -- 接收一行内容static Set<String> ipSet = new HashSet<>(); //静态的set集合 哈希Setpublic static void main(String[] args)throws Exception{ //Socket 英语:袜子 可以理解为电话线ServerSocket server = new ServerSocket(12666); //创建Socket服务 并且指定 端口号 相当于门牌号boolean isRunning = true; //标识符 控制while循环;写true的话是死循环,系统编译不通过,这样骗过系统,才能执行下面的关闭操作while(isRunning){ //while循环Socket skt = server.accept(); //接收Socket服务:accept()方法 -- 大堂经理ServerThread st = new ServerThread(skt); //大堂经理招呼一个 服务员(线程) 去服务来的客人,然后大堂经理继续在大厅迎客st.start(); //服务员开始服务}server.close(); //关闭Socket服务}
}
class ServerThread extends Thread{ //创建线性的第一种方式 相当于学生类Socket skt; //创建 Socket属性 相当于学生姓名public ServerThread(Socket skt){ //创建构造方法 知道为哪个Socket服务 听哪一个大堂经理的this.skt = skt;}@Overridepublic void run(){try{ //抛异常try catchInputStream is = skt.getInputStream(); //通过Socket获得输入流 getInputStream() 不是new!!!InputStreamReader r = new InputStreamReader(is);//桥转换器:字节 -》字符BufferedReader br = new BufferedReader(r); //BufferedReaderString str = br.readLine(); //读取一行String ip = skt.getInetAddress().toString(); //获取ip地址并转成字符串TestServer01.ipSet.add(ip); //将ip添加到set集合System.out.println(ip+ " : " + str + " "+TestServer01.ipSet.size() + "/55");//输出ip和内容br.close(); //关BufferedReaderskt.close(); //关Socket}catch(Exception e){e.printStackTrace();}}
}
import java.net.*;
import java.io.*;
import java.util.concurrent.*;
public class TestServer02{ // 服务器端 -- 提供图片下载public static void main(String[] args)throws Exception{ExecutorService es = Executors.newCachedThreadPool();//创建带缓存机制的线程池 -- 执行器工具类.缓冲机制线程池ServerSocket server = new ServerSocket(12345); //创建Socket服务 ServerSocket,指定端口号 -- 门牌号boolean isRunning = true; //设置循环控制变量,避免死循环无法执行之后的关闭操作while(isRunning){ //while循环Socket skt = server.accept(); //接收Socket服务accept()方法 -- 大堂经理EtoakThread et = new EtoakThread(skt); //大堂经理招呼 服务员--线程 服务来的客人es.submit(et); //服务员开始服务}server.close(); //关闭Socket服务es.shutdown(); //关闭执行器}
}
class EtoakThread implements Callable<String>{ //创建线程的第三种方式Socket skt; //创建Socket属性 相当于学生姓名public EtoakThread(Socket skt){ //构造方法:知道为哪个Socket服务this.skt = skt;}@Overridepublic String call()throws Exception{ //覆盖call()方法 有返回值 且 能抛异常FileInputStream fis = new FileInputStream("jay.jpg");//创建输入流对象 newOutputStream os = skt.getOutputStream(); //通过Socket获得输出流byte[] data = new byte[65536]; //配合数组完成写出int len; //规定写出长度while((len = fis.read(data))!=-1){ //while循环:输入流读不到-1则继续执行os.write(data,0,len); //输出流写出}os.close(); //关输出流fis.close(); //关输入流skt.close(); //关SocketSystem.out.println(skt.getInetAddress() + "下载完毕");//提示某个ip下载完成return "ETOAK"; //返回一个字符串}
}
import java.net.*;
import java.io.*;
import java.util.concurrent.*;public class TestServer03{ // 服务器端 -- 接收客户端发来的内容 返回相应指定的内容public static void main(String[] args)throws Exception{ExecutorService es = Executors.newFixedThreadPool(5); //创建可修复的线程池 执行器类.可修复线程池ServerSocket server = new ServerSocket(12000); //创建Socket服务 且指定端口号 -- 门牌号boolean isRunning = true; //设置循环变量控制变量 避免死循环无法执行之后的关闭操作while(isRunning){ //while循环Socket skt = server.accept(); //接收Socket服务accept()方法 -- 大堂经理ServerThread st = new ServerThread(skt); //大堂经理招呼 服务员--线程 服务来的客人es.submit(st); //开始服务}server.close(); //关闭Socket服务es.shutdown(); //关闭执行器}}
class ServerThread implements Runnable{ //创建线程的第二种方式Socket skt; //创建Socket属性 相当于学生姓名public ServerThread(Socket skt){ //构造方法:知道为哪个Socket服务this.skt = skt;}@Overridepublic void run(){ //覆盖run()方法try{ //try catch处理异常//1.接InputStream is = skt.getInputStream(); //通过Socket获得输入流InputStreamReader r = new InputStreamReader(is); //桥转换器 字节 -》字符BufferedReader br = new BufferedReader(r); //BufferedReaderString name = br.readLine(); //读一行//2.化String result = X.get(name); //类名.get() 获得内容//3.发OutputStream os = skt.getOutputStream(); //通过Socket获得输出流PrintWriter pw = new PrintWriter(os,true); //PrintWriter 且 清空缓冲pw.println(result); //输出 所获得的内容pw.close(); //关闭PrintWriterbr.close(); //关闭BufferedReaderskt.close(); //关闭SocketSystem.out.println(skt.getInetAddress() + " : " + name + " -> "+result);//打印哪个ip 输入的名字 的结果}catch(Exception e){e.printStackTrace();}}
}class X{public static String get(String name){ //静态get(String)if(name.contains("吴") || name.contains("老大") ) //判断是否包含特定字return "天机不可泄露"; //结束方法 返回指定内容String[] data = {"去陪凢凢","命运多舛","平平淡淡","大富大贵","天命之子"};//String[] 装命运的五种描述int x = name.hashCode()*17/3-1; //获得名字的hashCode()long time = System.currentTimeMillis() / (24L*60*60*1000);//获得当前时间的整天数x += time*53/29; //由名字的hashCode()和时间决定的一个值x = Math.abs(x); //绝对值x = x % data.length; //对数组的长度取模获取下标return data[x]; //返回数组}
}
import java.io.*;
import java.net.*;
import javax.swing.*;
public class TestClient01{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.85",12666);OutputStream os = skt.getOutputStream();OutputStreamWriter w = new OutputStreamWriter(os,"GBK");PrintWriter pw = new PrintWriter(w,true);pw.println(str);pw.close();skt.close();}}
}
import java.net.*;
import java.io.*;
public class TestClient02{public static void main(String[] args)throws Exception{Socket skt = new Socket("192.168.31.85",12345);InputStream is = skt.getInputStream();FileOutputStream fos = new FileOutputStream("ok.jpg");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.*;
public class TestClient03{public static void main(String[] args)throws Exception{Socket skt = new Socket("192.168.31.85",12000);OutputStream os = skt.getOutputStream();PrintWriter pw = new PrintWriter(os,true);pw.println("张总");InputStream is = skt.getInputStream();InputStreamReader r = new InputStreamReader(is);BufferedReader br = new BufferedReader(r);String result = br.readLine();br.close();pw.close();skt.close();System.out.println(result);}
}
本文标签: cs
版权声明:本文标题:【CS】 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1687901620a155296.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论