java socket多线程并发消息读取".properties"文件ip和端口配置
来源:互联网 发布:大型java web项目源码 编辑:程序博客网 时间:2024/06/16 11:49
本题考察了socket通信、多线程并发、读取文件,io流、面向对象封装,继承、类型转换等知识点。
client代码:
public void start(){Socket socket;String ss="";//调用同一包内ReadProperties类的ReadProperties()方法ReadProperties rp=new ReadProperties();rp.ReadProperties();String IP=rp.getIP();//从a.properties中获得ip//从a.properties中获得port,将String类型强转成int类型int port=Integer.parseInt(rp.getPort());try {socket=new Socket(IP,port);//System.out.println("IP="+IP);KeFuduanjie kf=new KeFuduanjie(socket);//客户端接收消息//客户端发送消息【kfs线程发送消息】KeFuWuFasong kfs = new KeFuWuFasong(socket);kfs.setName("kfs");ClientReadFile crf=new ClientReadFile(socket);//从硬盘读取文件kf.start();kfs.start();crf.start();} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}class KeFuduanjie extends Thread{Socket socket;String ss;BufferedReader br;public KeFuduanjie(Socket socket){this.socket=socket;try {br=new BufferedReader(new InputStreamReader(socket.getInputStream()));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//负责接收服务端来的消息public void run(){while(true){try {ss=br.readLine();System.out.println(socket.getLocalPort()+"服务器---->客服端: "+ss);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}class KeFuWuFasong extends Thread{Socket socket;BufferedWriter bw;BufferedReader br;//OutputStream os;//String word;public KeFuWuFasong(Socket socket){this.socket=socket;try {// os=socket.getOutputStream();//2将socket转换成IO流 br=new BufferedReader(new InputStreamReader(System.in));//不从控制台输入怎样写死?bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));//word="hi";//Thread.sleep(2000);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} }public void run(){while(true){try {//os.write(word.getBytes());bw.write(br.readLine());bw.newLine();bw.flush();//或用bw.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}class ClientReadFile extends Thread{Socket socket;DataInputStream dis;DataOutputStream dos;public ClientReadFile(Socket socket){this.socket=socket;try {dis=new DataInputStream(new FileInputStream("F:/commons-logging.properties"));dos=new DataOutputStream(socket.getOutputStream());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void run(){//while(true){try {Thread.sleep(10000);System.out.println("wait 10s");int i=0; byte[] b=new byte[1024]; String s; while((i=dis.read(b))>0){ s=new String(b,"gbk"); dos.write(b,0,i); System.out.println("读取的文件信息:"+s); }dos.flush();//或用bw.close();dis.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}//}}
server端代码:
public class Server {public static void main(String[] args) {Server server=new Server();server.start();}public void start(){ReadProperties rp=new ReadProperties();rp.ReadProperties();int port=Integer.parseInt(rp.getPort());//2014-4-9将String类型强转成int类型try {ServerSocket ss=new ServerSocket(port);Socket socket = null;ServerToClientThread stct = null;while(true){socket = ss.accept(); //迎接(接收)客户端的Socket访问stct = new ServerToClientThread(socket); //分配一个新线程负责和信赖的Socket沟通stct.start();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}class ServerToClientThread extends Thread{Socket socket;BufferedReader br;BufferedWriter bw;String s;//建立的同时,和客户端的Socket建立输入、输出流public ServerToClientThread(Socket socket){this.socket = socket;try {bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));} catch (IOException e) {e.printStackTrace();}}public void run(){ServerReceiveFromClient srfc = new ServerReceiveFromClient(socket);srfc.start();while(true){try {bw.write("欢迎光临。");bw.newLine();bw.flush();Thread.sleep(10*1000);} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}}}class ServerReceiveFromClient extends Thread{Socket socket;BufferedReader br;String s;public ServerReceiveFromClient(Socket socket){this.socket = socket;try {br = new BufferedReader(new InputStreamReader(socket.getInputStream()));} catch (IOException e) {e.printStackTrace();}}public void run(){while(true){try {s = br.readLine();System.out.println("客户端:"+socket.getInetAddress().getHostAddress()+"发送了:"+s);} catch (Exception e) {e.printStackTrace();}}}}
properties文件内容:
ip=127.0.0.1
port=8080
0 0
- java socket多线程并发消息读取".properties"文件ip和端口配置
- java 中配置和读取properties文件
- java读取配置Properties文件
- Java配置properties文件的加载和读取方法
- Java读取Properties文件 Java加载配置Properties文件
- 如何配置properties文件和读取properties文件参数
- Java简单读取properties文件配置
- java读取属性配置(properties)文件
- Java读取配置(.properties)文件的方法
- Java读取Properties文件中在配置
- Java基于Spring配置读取properties文件
- java 读取和写入properties文件
- java如何读取和遍历properties文件
- java读取properties文件方法和对比
- java读取properties文件方法和对比
- java读取properties文件方法和对比
- java读取properties文件方法和对比
- Java读取Properties文件
- 是什么结构语句?
- puppet Dashboard安装指南for Ubuntu
- OpenCV--线、轮廓的提取与描述
- Spring 3.x MVC 图解MVC整体流程
- 中国人应如何正确防晒?
- java socket多线程并发消息读取".properties"文件ip和端口配置
- LRU Cache
- JavaSE基础第二部分:Java基础语法之常量与变量
- Android Mms专题之:接收信息流程
- Spring Bean的生命周期
- sqlserver数据导入mysql八: 把sqlserver中的存储过程注释后创建到mysql中(留着人工修改)
- 解析OpenSSL漏洞:影响巨大 两年前已存在
- lucene检索实例
- 都叫兽!你在说什么?@。@!看字幕(适配器模式)