第四次过程性考核
码云地址:https://gitee.com/Helen_en/fourth_process_assessment/tree/master
使用套接写连接编写一个简单的聊天室程序,客户端主函数放在Client_Main.java文件中,服务器端主函数放在Server_Main.java文件中
要求:
- 1.客户端从控制台进行输入,并将客户端的输出内容和时间保存到“学号.txt”文件中
- 2.服务器端读取到客户端的程序后,给客户端以回应,并将客户端的输入内容与服务端的输出内容、时间保存到文本文件中
- 3.要求服务器端可以实现同时与多个客户端进行通信,与每一个客户端通信的内容,保存为一个“学号_ip.txt”的文件
- 4.4.提交文件结果包括:代码,通信后生成的txt文件
Client_Main:
import java.io.*; import java.net.*; import java.util.*; public class Client_Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); Socket mysocket=null; DataInputStream in=null; DataOutputStream out=null; Thread readData; Read read=null; try{ mysocket=new Socket(); read =new Read(); readData=new Thread(read);//负责读取信息的线程 System.out.print("输入服务器的IP:"); String IP=scanner.nextLine(); System.out.print("输入端口号:"); int port=scanner.nextLine(); if (mysocket.isConnected()){} else{ InetAddress address=InetAddress.getByName("10.43.11.98"); InetSocketAddress socketAddress=new InetSocketAddress(address,port); mysocket.connect(socketAddress); in =new DataInputStream(mysocket.getInputStream()); out =new DataOutputStream(mysocket.getOutputStream()); read.setDataInputStream(in); readData.start();//启动负者读取信息的线程 } } catch(Exception e){ System.out.println("服务器已断开"+e); } System.out.print("输入圆的半径(放弃请输入N):"); while(scanner.hasNext()){ double radius =0; try{ radius=scanner.nextDouble(); } catch (InputMismatchException exp){ System.exit(0); } try { out.writeDouble(radius); } catch(Exception e){} } } }
Server_Main:
import java.io.*; import java.net.*; import java.util.*; public class Server_Main { public static void main(String[] args) { ServerSocket server =null; ServerThread thread; Socket you = null; while(true) { try{ server= new ServerSocket (2010); } catch (IOException e1){ System.out.println("正在监听"); //ServerSocket 对象不能重复创建 } try{ System.out.println("等待客户呼叫"); you=server.accept () ; System。out.println("'客户地址:"+you.getInetAddress()); } catch (IOException e) { System.out .println("正在等待客户"); } if(you!=null) { new ServerThread (you).start()); //为每一客户启动一个专门的线程 } } } } class ServerThread extends Thread { Socket socket; DataOutputStream out = null; DataInputStream in = null; String s = null; ServerThread(Socket t) { socket =t; try { out = new DataOutputStream (socket.getOutputStream()); in =new DataInputStream (socket.getInputstream()); } catch(IOException e){} } public void run(){ while(true){ try { double r =in.readDouble(); double area=Math.PI*r*r; out.writeDouble(area); } catch (IOException e){ System.out.println("客户离开"); return; } } } }
read:
import java.io.*; public class Read implements Runnable { DataInputStream in; public void setDataInputStream(DataInputstream in){ this.in = in; } public void run(){ double result = 0; while(true) { try{ result =In.readDouble(); //读取服务器友送来的信息 System. out .printin (“圓的面枳:"+result); System.out.print ("綸入圓的半径(放弃靖綸入N):"); } catch(IOException e) { System.out.println("与服务器已断幵"+e); break; } } } }
考试总结:
学习Java已经一学期了,从最开始的迷茫,到现在可以编写一些简单的程序。这个考试让我明白了,这学期学的没有那么扎实,这次考试是这学期的回顾
以后在学习Java的时候,不应该浮躁,应该一步一个脚印的学习,将基础的的程序的复习再复习一遍。加深印象,使自己更加的优秀。
posted on 2018-12-15 13:04 nihaoya!!! 阅读(178) 评论(0) 编辑 收藏 举报