基于GUI的网络通信程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1/6《Java程序设计》实验报告--实验3实验室:2014年12月10日学院计算机与信息学院专业班级姓名成绩课程名称Java程序设计实验项目名称实验三基于GUI的网络通信程序设计指导教师教师评语教师签名:年月日一、实验目的1.掌握Java中GUI程序的编写,包括事件监听机制。2.掌握Java的网络通信编程,ServerSocket,Socket类的使用。3.掌握Java中多线程的编程,Thread类,Runnable接口的使用。4.掌握用面向对象的方法分析和解决复杂问题。二、实验原理1.利用java.awt和javax.swing包提供的各种组件实现服务器和客户端的界面设计。2.使用套接字实现基于TCP协议的服务器和客户端。3.为服务器和客户端界面中的有关组件添加消息相应,实现交互。三、使用硬件、软件环境PC计算机一台,配置为CPU为2.6G,内存为4G,硬盘为1T,安装Windows8操作系统。另外,使用JCreator,JDK1.8.0等软件四、实验过程、步骤及原始记录(算法、原程序、测试结果,分析等)1.实验过程:首先实现界面的编写,之后使用套接字实现基于TCP协议的通信,再设置监视器,为相应的组件添加消息相应。2.源程序:1.客户端程序:KeHuDuan.javaimportjava.awt.*;importjava.awt.event.*;importjava.util.*;importjava.io.*;importjava.net.*;importjavax.swing.*;2/6publicclassKeHuDuan{publicstaticvoidmain(String[]args){MyFrameclient=newMyFrame();client.setVisible(true);client.setResizable(false);client.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);}}classMyFrameextendsJFrame{JTextFieldip;JTextFieldport;JTextFieldcin;JTextAreacontent;JButtonconnect;JButtonsay;Socketsocket;MyFrame(){init();ConnectListencListener=newConnectListen();SayListensListener=newSayListen();connect.addActionListener(cListener);say.addActionListener(sListener);}voidinit(){setLayout(newFlowLayout());setSize(400,400);setLocation(800,100);add(newJLabel(Serveip));ip=newJTextField(127.0.0.1,8);add(ip);add(newJLabel(Serveport));port=newJTextField(8888,8);add(port);connect=newJButton(connect);add(connect);content=newJTextArea(16,35);JScrollPanescroll=newJScrollPane(content);add(scroll);add(newLabel(Say:));cin=newJTextField(25);add(cin);say=newJButton(say);add(say);3/6}classConnectListenimplementsActionListener{intportNum;publicvoidactionPerformed(ActionEvente){connect.setEnabled(false);try{portNum=Integer.parseInt(port.getText());socket=newSocket(ip.getText(),portNum);ClientThreadct=newClientThread();ct.start();}catch(Exceptionex){}}}classSayListenimplementsActionListener{Stringstr;publicvoidactionPerformed(ActionEvente){try{PrintWriterout=newPrintWriter(newBufferedWriter(newOutputStreamWriter(socket.getOutputStream())),true);str=cin.getText();if(!str.isEmpty()){out.println(str);content.append(me:+str+\n);out.flush();}cin.setText();}catch(Exceptionex){}}}classClientThreadextendsThread{publicvoidrun(){try{BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream()));Stringstr;while(true){str=in.readLine();//System.out.println(\a);content.append(str+\n);}4/6}catch(Exceptionex){}}}}2.服务器端程序:importjava.awt.*;importjava.awt.event.*;importjava.util.*;importjava.io.*;importjava.net.*;importjavax.swing.*;publicclassFuWuQi{publicstaticvoidmain(String[]args){MyFrameserve=newMyFrame();serve.setVisible(true);serve.setResizable(false);serve.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);}}classMyFrameextendsJFrame{JTextFieldport;JButtonstart;JTextAreacontent;JTextFieldcin;JButtonsay;Socketsocket;MyFrame(){init();StartListensListen=newStartListen();SayListenstListen=newSayListen();start.addActionListener(sListen);say.addActionListener(stListen);}voidinit(){setLayout(newFlowLayout());setSize(400,400);setLocation(400,100);add(newJLabel(Port:));port=newJTextField(8888,25);add(port);start=newJButton(Start);add(start);5/6content=newJTextArea(15,35);JScrollPanescroll=newJScrollPane(content);add(scroll);add(newJLabel(Say:));cin=newJTextField(26);add(cin);say=newJButton(Say);add(say);}classStartListenimplementsActionListener{publicvoidactionPerformed(ActionEvente){start.setEnabled(false);try{ServerSockets=newServerSocket(Integer.parseInt(port.getText()));socket=s.accept();PrintWriterout=newPrintWriter(newBufferedWriter(newOutputStreamWriter(socket.getOutputStream())),true);out.println(连接成功);content.append(连接成功+\n);ServerThreadst=newServerThread();st.start();}catch(Exceptionex){}}}classSayListenimplementsActionListener{Stringstr;publicvoidactionPerformed(ActionEvente){try{PrintWriterout=newPrintWriter(newBufferedWriter(newOutputStreamWriter(socket.getOutputStream())),true);str=cin.getText();if(!str.isEmpty()){out.println(str);content.append(me:+str+\n);out.flush();}cin.setText();}catch(Exceptionex){}6/6}}classServerThreadextendsThread{publicvoidrun(){try{BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream()));Stringstr;while(true){str=in.readLine();content.append(str+\n);}}catch(Exceptionex){}}}}3.测试结果:五、实验结论、分析、思考题与心得体会通过本次实验,我有以下几方面的收获、认识和体会:1.学会了编写带有图形化界面的程序。2.简单掌握了JFrame、JLabel、JTextField、JButton和JPanel等组件的方法。3.能够独立解决部分编译和执行过程中的错误信息。4.掌握事件处理的方法和常用的布局管理器。

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功