java实验报告二.docx
- 文档编号:2920924
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:11
- 大小:77.98KB
java实验报告二.docx
《java实验报告二.docx》由会员分享,可在线阅读,更多相关《java实验报告二.docx(11页珍藏版)》请在冰豆网上搜索。
java实验报告二
《Java技术》实验报告
实验一:
2017年09月日
学院
计算机与信息学院
专业班级
姓名
成绩
课程
名称
Java技术
实验项目
名称
实验二基于GUI的网络通信程序设计
指导
教师
薛峰
教师评语
教师签名:
年月日
一、实验目的
1.掌握Java中GUI程序的编写,包括事件监听机制。
2.掌握Java的网络通信编程,ServerSocket,Socket类的使用。
3.掌握Java中多线程的编程,Thread类,Runnable接口的使用。
4.掌握用面向对象的方法分析和解决复杂问题。
二、实验原理
编写程序完成以下功能:
1.设计一个基于GUI的客户-服务器的通信应用程序,如图1,图2所示。
图1Socket通信服务器端界面
图2Socket通信客户端界面
2.图1为Socket通信服务器端界面,点击该界面中的【Start】按钮,启动服务器监听服务(在图1界面中间的多行文本区域显示“Serverstarting…”字样)。
图2为Socket通信客户端界面,点击该界面中的【Connect】按钮与服务器建立链接,并在图2所示界面中间的多行文本区域显示“Connecttoserver…”字样,当服务器端监听到客户端的连接后,在图1界面中间的多行文本区域追加一行“Clientconnected…”字样,并与客户端建立Socket连接。
3.当图1所示的服务器端和图2所示的客户机端建立Socket连接后,编程实现服务端、客户端之间的“单向通信”:
在客户端的输入界面发送消息,在服务端接收该消息,并将接收到对方的数据追加显示在多行文本框中。
三、使用硬件、软件环境
PC计算机一台,配置为CPU为1.5G,内存为512M,硬盘为40G,安装WindowsXP操作系统。
另外,使用eclipse,JDK1.6.0等软件
四、实验过程、步骤及原始记录(算法、原程序、测试结果,分析等)
1、先实现awt的界面编程,编写程序框,文字输入框,文本框等,并在按钮处插入actionlistener。
2、编写Listen1和Listen2来分别监听Start按钮和say按钮。
并在服务器与客户端各编写一个线程用来接收对方发来的信息。
服务器中的start创建serversocket然后等待客户端的start创建socket。
连接成功后两者分别开启接收信息的线程。
Say按钮按下时listen2发送信息去另一端口。
3、源代码
packagenet;
importjava.awt.*;
importjava.io.*;
importjava.awt.event.*;
import.*;
publicclassServerFrameextendsFrame{
publicServerFrame(Stringtitle){
super(title);
}
PanelnorthPanel,centerPanel,southPanel;
TextFieldtfport,tfsay,tfIP;
LabellabelPort,labelSay,labelIP;
ButtonbtStart,btSay;
TextAreatamsg;
ServerSockets=null;
Socketclient=null;
InputStreamis=null;
PrintWriteros=null;
Listen1ls1=newListen1();
Listen2ls2=newListen2();
BufferedReaderhear;
voidinitGUI(){
northPanel=newPanel();centerPanel=newPanel();southPanel=newPanel();
add(northPanel,"North");add(centerPanel,"Center");add(southPanel,"South");
btStart=newButton("start");btSay=newButton("say");
btStart.addActionListener(ls1);btSay.addActionListener(ls2);
labelSay=newLabel("Say");labelPort=newLabel("port");
tfport=newTextField("3000",60);tfsay=newTextField(60);
tamsg=newTextArea(16,75);
northPanel.add(labelPort);northPanel.add(tfport);northPanel.add(btStart);
centerPanel.add(tamsg);
southPanel.add(labelSay);southPanel.add(tfsay);southPanel.add(btSay);
pack();
setVisible(true);
addWindowListener(newWindowAdapter(){//Addsthespecifiedwindowlistenertoreceivewindoweventsfromthiswindow
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
}
publicstaticvoidmain(String[]args){
ServerFrameserver=newServerFrame("服务器");
server.initGUI();
}
classserverThreadextendsThread{
InputStreamis=null;
publicvoidrun(){
try{
is=client.getInputStream();
hear=newBufferedReader(newInputStreamReader(is));
tamsg.append(hear.readLine());
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
System.exit
(1);
}
}
}
classListen1implementsActionListener{
@Override
publicvoidactionPerformed(ActionEvente){
tamsg.append("serverstarting");
try{
s=newServerSocket(3000);
tamsg.append("asdhasd");
}catch(IOExceptione1){
System.exit
(1);
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
try{
client=s.accept();
}catch(IOExceptione1){
System.exit
(1);
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
try{
os=newPrintWriter(client.getOutputStream(),true);
}catch(IOExceptione1){
System.exit
(1);
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
serverThreadis1=newserverThread();
is1.start();
}
}
classListen2implementsActionListener{
@Override
publicvoidactionPerformed(ActionEvente){
if(tfsay.getText()!
=""){
tamsg.append(tfsay.getText()+'\n');
os.write(tfsay.getText()+'\n');
os.flush();
tfsay.setText("");
}
}
}
}
-----------------------------------------------------------------------------------------------------------------------------------packagenet;
importjava.awt.*;
importjava.io.*;
importjava.awt.event.*;
import.*;
publicclassClientFrameextendsFrame{
publicClientFrame(Stringtitle){
super(title);
}
PanelnorthPanel,centerPanel,southPanel;
TextFieldtfport,tfsay,tfIP;
LabellabelPort,labelSay,labelIP;
ButtonbtStart,btSay;
TextAreatamsg;
Sockets;
PrintWriterout;
BufferedReaderin;
Listen1ls1=newListen1();
Listen2ls2=newListen2();
voidinitGUI(){
northPanel=newPanel();centerPanel=newPanel();southPanel=newPanel();
add(northPanel,"North");add(centerPanel,"Center");add(southPanel,"South");
btStart=newButton("Connect");btSay=newButton("say");
btStart.addActionListener(ls1);btSay.addActionListener(ls2);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 实验 报告