java实验五.docx

上传人:b****3 文档编号:10890990 上传时间:2023-05-28 格式:DOCX 页数:16 大小:266.74KB
下载 相关 举报
java实验五.docx_第1页
第1页 / 共16页
java实验五.docx_第2页
第2页 / 共16页
java实验五.docx_第3页
第3页 / 共16页
java实验五.docx_第4页
第4页 / 共16页
java实验五.docx_第5页
第5页 / 共16页
java实验五.docx_第6页
第6页 / 共16页
java实验五.docx_第7页
第7页 / 共16页
java实验五.docx_第8页
第8页 / 共16页
java实验五.docx_第9页
第9页 / 共16页
java实验五.docx_第10页
第10页 / 共16页
java实验五.docx_第11页
第11页 / 共16页
java实验五.docx_第12页
第12页 / 共16页
java实验五.docx_第13页
第13页 / 共16页
java实验五.docx_第14页
第14页 / 共16页
java实验五.docx_第15页
第15页 / 共16页
java实验五.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

java实验五.docx

《java实验五.docx》由会员分享,可在线阅读,更多相关《java实验五.docx(16页珍藏版)》请在冰点文库上搜索。

java实验五.docx

java实验五

《Java程序设计》实验报告

 

班级:

12计科

(2)班学号:

姓名:

一.题目

1.编写一个程序,实现访问一个网站并将指定的一个页面保存到本地

2.图形界面编程,利用socket和TCP编写,允许客户器指定一个文件名,并让服务器发回文件的内容,或者指出文件不存在。

3.图形界面编程,利用socket和UDP编写,客户端和服务器端程序可以进行多次对话

目的和要求

二.功能说明

1.实现将网站的全部内容通过以将io流包装,把网站上的内容以字符串形式复制到data.htm

2.利用socket和TCP,在客户端和服务端实现多次对话,并实现文件内容传送。

3.利用socket和UDP,在客户端和服务端实现多次对话。

三.设计流程图

首先实现聊天程序

用io流包装url资源,把网站上的内容以字符串形式复制到data.htm

用URL找到相应的页面资源

关闭窗口结束

在服务器端当有输入路径的时候,取得文件的内容,并传给客户端

关闭窗口结束

用循环不断捕获UDP数据包,并且监听“发送”按钮,实现数据包的发送

输入相应的端口号和对方ip地址

四.源程序

1.

importjava.io.BufferedReader;

importjava.io.BufferedWriter;

importjava.io.FileOutputStream;

importjava.io.InputStreamReader;

importjava.io.OutputStreamWriter;

import.URL;

import.URLConnection;

 

publicclassGetUrl{

publicstaticvoidmain(String[]args)throwsException{

URLurl=newURL("");

URLConnectionuc=url.openConnection();

BufferedReaderin=newBufferedReader(newInputStreamReader(uc.getInputStream()));

FileOutputStreamf=newFileOutputStream("data.htm");

BufferedWriterbw=newBufferedWriter(newOutputStreamWriter(f));

StringlineString;

while((lineString=in.readLine())!

=null){

bw.write(lineString);

}

bw.close();

in.close();

System.out.println("保存成功!

");

}

}

2.

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.io.BufferedReader;

importjava.io.DataInputStream;

importjava.io.DataOutputStream;

importjava.io.FileInputStream;

importjava.io.IOException;

importjava.io.InputStreamReader;

import.ServerSocket;

import.Socket;

importjavax.swing.JFrame;

importjavax.swing.JTextArea;

importjavax.swing.JButton;

importjavax.swing.JScrollPane;

importjavax.swing.JTextField;

importjavax.swing.JLabel;

publicclassTCPChatimplementsRunnable,ActionListener{

privateJFramefrmUdp;

JTextAreatextArea;

JTextAreatextArea_1;

JButtonbutton;

JButtonbutton_1;

ServerSocketserverSocket;

Socketsocket;

Threadthread;

JButtonbutton_2;

inti=0;

privateJTextFieldtextField;

privateJLabellabel;

/**

*@wbp.parser.entryPoint

*/

publicTCPChat(){

frmUdp=newJFrame();

frmUdp.setTitle("TCP\u804A\u5929");

frmUdp.setResizable(false);

frmUdp.setBounds(100,100,450,300);

frmUdp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frmUdp.getContentPane().setLayout(null);

textArea_1=newJTextArea();

textArea_1.setBounds(10,228,279,23);

frmUdp.getContentPane().add(textArea_1);

button=newJButton("\u53D1\u9001");

button.setBounds(308,228,93,23);

button.addActionListener(this);

frmUdp.getContentPane().add(button);

button_1=newJButton("\u65B0\u5EFA\u670D\u52A1\u5668");

button_1.setBounds(308,33,116,23);

button_1.addActionListener(this);

frmUdp.getContentPane().add(button_1);

button_2=newJButton("\u8FDE\u63A5\u670D\u52A1\u5668");

button_2.setBounds(308,77,116,23);

button_2.addActionListener(this);

frmUdp.getContentPane().add(button_2);

JScrollPanescrollPane=newJScrollPane();

scrollPane.setBounds(10,10,279,199);

frmUdp.getContentPane().add(scrollPane);

textArea=newJTextArea();

scrollPane.setViewportView(textArea);

textField=newJTextField();

textField.setBounds(318,175,66,21);

frmUdp.getContentPane().add(textField);

textField.setColumns(10);

label=newJLabel("\u53D1\u9001\u6587\u4EF6\r\n\u7684\u8DEF\u5F84\u6846\uFF1A");

label.setBounds(308,142,126,23);

frmUdp.getContentPane().add(label);

frmUdp.setVisible(true);

}

/**

*@wbp.parser.entryPoint

*/

publicstaticvoidmain(String[]args){

newTCPChat();

}

publicvoidactionPerformed(ActionEvente){

try{

if(e.getSource()==button_1){

serverSocket=newServerSocket(8888);

textArea.append("服务器开始运行,连接成功!

\n");

socket=serverSocket.accept();

thread=newThread(this);

thread.start();

}

if(e.getSource()==button_2){

socket=newSocket("127.0.0.1",8888);

textArea.append("客户端开始运行!

\n");

textField.setEditable(false);

thread=newThread(this);

thread.start();

}else{

Stringstring;

DataOutputStreamout=newDataOutputStream(

socket.getOutputStream());

string=textArea_1.getText();

textArea_1.setText("");

if(textField.getText().equals("")){

textArea.append("----自己说----\n"+string+"\n");

out.writeUTF(string);

}else{

Stringstr;

FileInputStreamf=newFileInputStream(textField.getText());

BufferedReaderbw=newBufferedReader(

newInputStreamReader(f));

textArea.append("----自己说----\n");

while((str=bw.readLine())!

=null){

textArea.append(str);

out.writeUTF(str);

}

}

}

}catch(Exceptione1){

//TODO:

handleexception

textArea.append("服务器连接出错!

\n");

}

}

publicvoidrun(){

Stringstring;

while(true){

try{

DataInputStreamin=newDataInputStream(

socket.getInputStream());

string=in.readUTF();

textArea.append("----对方说----\n"+string+"\n");

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

textArea.append("读入错误!

\n");

}

}

}

}

3.

importjava.io.*;

import.*;

importjava.awt.event.*;

importjava.awt.*;

importjavax.swing.*;

publicclassUDPChatimplementsRunnable,ActionListener{

JTextAreashowArea;

JLabellbl1,lbl2,lbl3;

JTextFieldmsgText,sendPortText,receivePortText,IPAddressText;

JFramemainJframe;

JButtonsendBtn,startBtn;

JScrollPaneJSPane;

JPanelpane1,pane2;

Containercon;

Threadthread=null;

DatagramPacketsendPack,receivePack;

DatagramSocketsendSocket,receiveSocket;

privateInetAddresssendIP;

privateintsendPort,receivePort;//存储发送端口和接收端口

privatebyteinBuf[],outBuf[];

publicstaticfinalintBUFSIZE=256;

publicUDPChat(){

mainJframe=newJFrame("基于UDP聊天");

con=mainJframe.getContentPane();

showArea=newJTextArea();

showArea.setEditable(false);

showArea.setLineWrap(true);

lbl1=newJLabel("接收端口号:

");

lbl2=newJLabel("发送端口号:

");

lbl3=newJLabel("对方的地址:

");

sendPortText=newJTextField();

sendPortText.setColumns(5);

receivePortText=newJTextField();

receivePortText.setColumns(5);

IPAddressText=newJTextField();

IPAddressText.setColumns(8);

IPAddressText.setText("127.0.0.1");

startBtn=newJButton("开始");

startBtn.addActionListener(this);

pane1=newJPanel();

pane1.setLayout(newFlowLayout());

pane1.add(lbl1);

pane1.add(receivePortText);

pane1.add(lbl2);

pane1.add(sendPortText);

pane1.add(lbl3);

pane1.add(IPAddressText);

pane1.add(startBtn);

JSPane=newJScrollPane(showArea);

msgText=newJTextField();

msgText.setColumns(40);

msgText.setEditable(false);

msgText.addActionListener(this);

sendBtn=newJButton("发送");

sendBtn.setEnabled(false);

sendBtn.addActionListener(this);

pane2=newJPanel();

pane2.setLayout(newFlowLayout());

pane2.add(msgText);

pane2.add(sendBtn);

con.add(pane1,BorderLayout.NORTH);

con.add(JSPane,BorderLayout.CENTER);

con.add(pane2,BorderLayout.SOUTH);

mainJframe.setSize(600,400);

mainJframe.setVisible(true);

mainJframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

publicstaticvoidmain(String[]args){

newUDPChat();

}

publicvoidactionPerformed(ActionEvente){

try{

if(e.getSource()==startBtn){//按下了开始按钮

inBuf=newbyte[BUFSIZE];

sendPort=Integer.parseInt(sendPortText.getText());

sendIP=InetAddress.getByName(IPAddressText.getText());

sendSocket=newDatagramSocket();

receivePort=Integer.parseInt(receivePortText.getText());

//创建接收数据包

receivePack=newDatagramPacket(inBuf,BUFSIZE);

//指定接收数据的端口

receiveSocket=newDatagramSocket(receivePort);

//创建线程准备接收对方的消息

thread=newThread(this);

thread.start();

startBtn.setEnabled(false);

sendBtn.setEnabled(true);

msgText.setEditable(true);

}else{//按下了发送按钮或回车键

outBuf=msgText.getText().getBytes();

//组装要发送的数据包

sendPack=newDatagramPacket(outBuf,outBuf.length,sendIP,

sendPort);

//发送数据

sendSocket.send(sendPack);

showArea.append("----自己说----\n"+msgText.getText()+"\n");

msgText.setText(null);

}

}catch(UnknownHostExceptionel){

showArea.append("无法连接到指定地址\n");

}catch(SocketExceptionel){

showArea.append("无法打开指定端口\n");

}catch(IOExceptionel){

showArea.append("发送数据失败\n");

}

}

//在线程中接收数据

publicvoidrun(){

Stringmsgstr;

while(true){

try{//注意这个try的位置

receiveSocket.receive(receivePack);

msgstr=newString(receivePack.getData(),0,

receivePack.getLength());

showArea.append("----对方说----\n"+msgstr+"\n");

}catch(IOExceptionel){

showArea.append("接收数据出错\n");

}

}

}

}

五.数据结果

第一题:

第二题:

第三题:

六.实验心得与体会

熟练掌握了网络中的URL资源获取方式,网络编程中的UDP,TCP通讯方式,以及结合文件操作,实现文件内容的传送。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2