第四次过程性考核
Posted yyh1234
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第四次过程性考核相关的知识,希望对你有一定的参考价值。
*160120
使用套接写连接编写一个简单的聊天室程序,客户端主函数放在Client_Main.java文件中,服务器端主函数放在Server_Main.java文件中
要求:
- 1.客户端从控制台进行输入,并将客户端的输出内容和时间保存到“学号.txt”文件中
- 2.服务器端读取到客户端的程序后,给客户端以回应,并将客户端的输入内容与服务端的输出内容、时间保存到文本文件中
- 3.要求服务器端可以实现同时与多个客户端进行通信,与每一个客户端通信的内容,保存为一个“学号_ip.txt”的文件
- 4.4.提交文件结果包括:代码,通信后生成的txt文件
程序设计思路:先编写代码,让客户端和服务器能通信,在添加日志文件
运用到的知识点:多线程,文件的输入与存储,套接字
客户端:
1 import java.awt.EventQueue; 2 import java.awt.event.ActionEvent; 3 import java.awt.event.ActionListener; 4 import java.io.*; 5 import java.net.*; 6 import java.util.*; 7 8 import javax.swing.JButton; 9 import javax.swing.JFrame; 10 import javax.swing.JLabel; 11 import javax.swing.JPanel; 12 import javax.swing.JScrollPane; 13 import javax.swing.JTextArea; 14 import javax.swing.JTextField; 15 import javax.swing.SwingConstants; 16 import javax.swing.border.EmptyBorder; 17 public class Client extends JFrame { 18 private JPanel contentPane; 19 private Socket socket; 20 private JTextArea textArea; 21 private JTextField textField; 22 private JTextField textField1; 23 private OutputStream out; 24 private InputStream is; 25 public static void main(String[] args) { 26 EventQueue.invokeLater(new Runnable() { 27 public void run() { 28 try { 29 Client frame = new Client(); 30 frame.setVisible(true); 31 } catch (Exception e) { 32 e.printStackTrace(); 33 } 34 } 35 }); 36 } 37 public Client() throws UnknownHostException, IOException { 38 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 39 setBounds(100, 100, 450, 300); 40 contentPane = new JPanel(); 41 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 42 setContentPane(contentPane); 43 contentPane.setLayout(null); 44 45 JPanel panel = new JPanel(); 46 panel.setBounds(10, 10, 398, 39); 47 contentPane.add(panel); 48 49 JLabel lblNewLabel = new JLabel("u6635u79F0uFF1A"); 50 panel.add(lblNewLabel); 51 52 textField = new JTextField(); 53 textField.setText("u6E38u5BA2"); 54 panel.add(textField); 55 textField.setColumns(20); 56 57 JScrollPane scrollPane = new JScrollPane(); 58 scrollPane.setBounds(10, 59, 398, 143); 59 contentPane.add(scrollPane); 60 61 textArea = new JTextArea(); 62 scrollPane.setViewportView(textArea); 63 64 JPanel panel1 = new JPanel(); 65 panel1.setBounds(10, 212, 398, 39); 66 contentPane.add(panel1); 67 68 JLabel lblNewLabel_1 = new JLabel("u8F93u5165u804Au5929u5185u5BB9"); 69 panel1.add(lblNewLabel_1); 70 71 textField1 = new JTextField(); 72 panel1.add(textField1); 73 textField1.setColumns(20); 74 75 JButton btnNewButton = new JButton("u53D1u9001"); 76 btnNewButton.addActionListener(new ActionListener() { 77 public void actionPerformed1(ActionEvent e) { 78 try{ 79 out=socket.getOutputStream(); 80 String name=textField.getText()+":"; 81 String text=name+textField1.getText()+" "; 82 out.write(text.getBytes()); 83 out.flush(); 84 textField1.setText(""); 85 }catch(IOException e1){ 86 e1.printStackTrace(); 87 } 88 } 89 90 public void actionPerformed(ActionEvent arg0) { 91 92 } 93 }); 94 btnNewButton.setHorizontalAlignment(SwingConstants.RIGHT); 95 panel1.add(btnNewButton); 96 97 socket=new Socket("127.0.0.1",8889); 98 receiveMessage(); 99 } 100 101 private void receiveMessage() { 102 new Thread(){ 103 public void run(){ 104 try{ 105 is=socket.getInputStream(); 106 Scanner scan=new Scanner(is); 107 while(socket.isConnected()){ 108 String text=scan.nextLine()+" "; 109 textArea.append(text); 110 sleep(100); 111 } 112 }catch(Exception e){ 113 e.printStackTrace(); 114 } 115 } 116 }.start(); 117 } 118 }
服务器:
以上是关于第四次过程性考核的主要内容,如果未能解决你的问题,请参考以下文章