实验三基于GUI的网络通信程序设计Word格式文档下载.docx
- 文档编号:8163986
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:12
- 大小:77.96KB
实验三基于GUI的网络通信程序设计Word格式文档下载.docx
《实验三基于GUI的网络通信程序设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验三基于GUI的网络通信程序设计Word格式文档下载.docx(12页珍藏版)》请在冰点文库上搜索。
笔记本电脑,配置如下:
硬盘为500G,安装win7操作系统。
四、实验过程、步骤及原始记录(算法、原程序、测试结果,分析等)
接入:
//服务器端
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
importjava.io.*;
import.*;
importjavax.swing.*;
//窗体类
classSFrameextendsFrame{
ServerSocketserver=null;
Socketclient=null;
TextFieldport=newTextField("
8000"
);
//将端口默认设为8000
Buttonstart=newButton("
Start"
TextAreasfTA=newTextArea(25,60);
TextFieldsfTF=newTextField(40);
Buttonsay=newButton("
say"
SFListenersfListener=newSFListener();
//初始化
SFrame(Stringtitle){
super(title);
init();
//初始化
start.addActionListener(sfListener);
say.addActionListener(sfListener);
//按键监听
addWindowListener(//窗口监听器
newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){//关闭窗体
try{
server.close();
}
catch(Exceptionee)
{
ee.printStackTrace();
System.exit(0);
}
);
this.setVisible(true);
}
//初始化函数
voidinit(){
setLocation(10,10);
//窗体位置
setSize(400,400);
//窗体大小
setResizable(false);
//设置窗体不可由用户调整大小
setBackground(Color.gray);
//设置窗体背景色
sfTA.setBackground(Color.LIGHT_GRAY);
//BorderLayout.NORTH设置
PanelNorth=newPanel();
North.add(newLabel("
port"
));
North.add(this.port);
North.add(this.start);
this.add(North,BorderLayout.NORTH);
//BorderLayout.CENTER设置
PanelCenter=newPanel();
Center.add(this.sfTA);
this.add(Center,BorderLayout.CENTER);
//BorderLayout.SOUTH设置
PanelSouth=newPanel();
South.add(newLabel("
South.add(this.sfTF);
South.add(this.say);
this.add(South,BorderLayout.SOUTH);
//自动调整窗口大小
pack();
}
//监听器类
classSFListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
Strings=e.getActionCommand();
if("
==s){//start操作
try{
start.setEnabled(false);
inti=Integer.parseInt(port.getText());
sfTA.append("
ServerPort:
"
+port.getText()+"
\n"
server=newServerSocket(i);
client=server.accept();
aclientconnect...\n"
ServerThreadsfST=newServerThread();
//
sfST.start();
}
catch(Exceptionce){
ce.printStackTrace();
elseif("
==s){//say操作
PrintWriterss=newPrintWriter(client.getOutputStream());
Stringstr=sfTF.getText();
if(str!
="
){
sfTA.append("
Serversay:
+str+"
ss.write("
+str+"
ss.flush();
}
sfTF.setText("
catch(Exceptionse){
se.printStackTrace();
}
//线程类
classServerThreadextendsThread{
publicvoidrun(){
try{
BufferedReaderbr=newBufferedReader(newInputStreamReader(client.getInputStream()));
Strings=br.readLine();
while(!
clientsay:
bye"
.equals(s)&
&
s!
=null){
sfTA.append(s+"
s=br.readLine();
}
catch(Exceptionre){
re.printStackTrace();
}
//主类,启动服务器端
publicclassSocketServer{
publicstaticvoidmain(String[]args){
SFramesf=newSFrame("
服务器"
}
接收:
//客户端
classCFrameextendsFrame
{
Socketclient=null;
TextFieldport=newTextField("
TextFieldip=newTextField("
127.0.0.1"
Buttonconnect=newButton("
connect"
TextAreacfTA=newTextArea(25,60);
TextFieldcfTF=newTextField(40);
Buttonsay=newButton("
CFListenercfListener=newCFListener();
//
CFrame(Stringtitle)
{
super(title);
init();
connect.addActionListener(cfListener);
say.addActionListener(cfListener);
addWindowListener(//窗口监听器
newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){//关闭窗体
try{
client.close();
}catch(Exceptionee){
ee.printStackTrace();
System.exit(0);
);
setVisible(true);
voidinit(){
setLocation(500,10);
setSize(400,400);
setResizable(false);
setBackground(Color.gray);
cfTA.setBackground(Color.LIGHT_GRAY);
//BorderLayout.NORTH设置
PanelNorth=newPanel();
North.add(newLabel("
IP"
North.add(this.ip);
North.add(this.port);
North.add(this.connect);
this.add(North,BorderLayout.NORTH);
//BorderLayout.CENTER设置
PanelCenter=newPanel();
Center.add(this.cfTA);
this.add(Center,BorderLayout.CENTER);
//BorderLayout.SOUTH设置
PanelSouth=newPanel();
South.add(newLabel("
South.add(this.cfTF);
South.add(this.say);
this.add(South,BorderLayout.SOUTH);
//自动调整窗口大小
pack();
//监听器类
classCFListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
Strings=e.getActionCommand();
if("
==s){
try{
connect.setEnabled(false);
inti=Integer.parseInt(port.getText());
cfTA.append("
SocketConnectIP:
+ip.getText()+"
\nConnectPort:
client=newSocket(ip.getText(),i);
connect...\n"
ClientThreadcfCT=newClientThread();
//
cfCT.start();
catch(Exceptionce){
ce.printStackTrace();
elseif("
Stringstr=cfTF.getText();
PrintWritercc=newPrintWriter(client.getOutputStream());
if(str!
){
cc.write("
cc.flush();
cfTA.append("
cfTF.setText("
catch(Exceptionse){
se.printStackTrace();
classClientThreadextendsThread{
publicvoidrun(){
try{
BufferedReaderbr=newBufferedReader(newInputStreamReader(client.getInputStream()));
Strings=br.readLine();
while(!
=null){
cfTA.append(s+"
s=br.readLine();
catch(Exceptionre){
re.printStackTrace();
//主类,启动客户端
publicclassSocketClient{
publicstaticvoidmain(String[]args){
CFramecf=newCFrame("
客户端"
点击第一个界面中的【Start】按钮,启动服务器监听服务。
Socket通信客户端界面,点击第二个该界面中的【Connect】按钮与服务器建立链接,当服务器端监听到客户端的连接后,在第一个界面中间的多行文本区域追加一行文本,并与客户端建立Socket连接。
五、实验结论、分析、思考题与心得体会
参考了老师和网上的程序,
对GUI程序的编写和事件监听机制有了初步的了解。
对网络通信编程,ServerSocket,Socket类的使用有了初步的定义,对java程序编写的兴趣有了提升
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 基于 GUI 网络 通信 程序设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)