java实验报告网络基础Word文档下载推荐.docx

上传人:b****5 文档编号:21480316 上传时间:2023-01-30 格式:DOCX 页数:14 大小:346.98KB
下载 相关 举报
java实验报告网络基础Word文档下载推荐.docx_第1页
第1页 / 共14页
java实验报告网络基础Word文档下载推荐.docx_第2页
第2页 / 共14页
java实验报告网络基础Word文档下载推荐.docx_第3页
第3页 / 共14页
java实验报告网络基础Word文档下载推荐.docx_第4页
第4页 / 共14页
java实验报告网络基础Word文档下载推荐.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

java实验报告网络基础Word文档下载推荐.docx

《java实验报告网络基础Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《java实验报告网络基础Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。

java实验报告网络基础Word文档下载推荐.docx

}

}

}

实验题2使用URL类下载西北农林科技大学首页

publicvoidrun(){

try{

intn=0;

intsum=0;

jEditorPane1.setText(null);

url=newURL("

http:

//"

+jTextField1.getText().trim());

InputStreamin=url.openStream();

while((n=in.read(b))!

=-1){

sum+=n;

}

jEditorPane1.setPage(url);

jTextField2.setText("

+sum);

catch(Exceptione1){

jTextField1.setText("

+e1);

privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){

//TODOaddyourhandlingcodehere:

if(!

(thread.isAlive())){

thread=newThread(this);

try{thread.start();

}

catch(Exceptione){

jTextField1.setText("

+url);

实验题3利用Socket类和ServerSocket类编写一个C/S程序,实现C/S通信。

客户端向服务器端发送Time命令,服务器端接受到该字符串后将服务器端当前时间返回给客户端;

客户端向服务器端发送Exit命令,服务器端向客户端返回“Bye”后退出。

[基本要求]编写完整程序;

两人一组,一个作为服务器端,另一人作为客户端。

服务器端和客户端都需要打印出接受到的消息和发出的命令。

服务器端客户端

服务器端:

packagepackage3;

importjava.io.*;

importjava.util.Date;

publicclassServer{

ServerSocketserver=null;

Socketyou=null;

InputStreamReaderin=null;

OutputStreamWriterout=null;

Datetoday=newDate();

server=newServerSocket(18949);

catch(IOExceptione){

System.out.println(e);

System.out.println("

等待客户连接……"

you=server.accept();

in=newInputStreamReader(you.getInputStream());

out=newOutputStreamWriter(you.getOutputStream());

BufferedWriterbout=newBufferedWriter(out);

BufferedReaderbin=newBufferedReader(in);

Stringtemp=null;

while(true){

System.out.println("

等待客户信息"

temp=bin.readLine();

if(temp.equals("

Exit"

)){

System.out.println("

收到客户信息"

+temp);

bout.write("

Bye"

bout.newLine();

bout.flush();

break;

}

bout.write(today.toString());

bout.newLine();

bout.flush();

server.close();

you.close();

catch(IOExceptione1){

客户端断开连接……"

客户端:

publicclassClient{

Socketmysocket;

mysocket=newSocket("

127.0.0.1"

18949);

in=newInputStreamReader(mysocket.getInputStream());

out=newOutputStreamWriter(mysocket.getOutputStream());

bout.write("

Time"

Clientsend:

Time"

Stringtemp=null;

temp=bin.readLine();

Fromserver:

"

Exit"

mysocket.close();

catch(Exceptione){

实验题4编写一数据报通信程序,实现简单的聊天功能。

 

图3.14聊天程序界面

[基本要求]两人一组编写完整程序。

“聊天内容”和“输入文本”分别为当前聊天的历史信息和当前要传送出去的聊天文本。

“确定”、“清空”、“退出”三个按钮分别实现发送当前聊天文本、清空当前聊天文本和退出系统的功能。

publicvoidrun(){

jTextArea1.append("

开始接收信息:

+"

\n"

DatagramPacketpack=null;

DatagramSocketmailPack=null;

bytedata[]=newbyte[8192];

pack=newDatagramPacket(data,data.length);

mailPack=newDatagramSocket(29249);

System.out.println(e+"

while(true){

if(mailPack==null){

break;

else{

try{

mailPack.receive(pack);

Stringmessage=newString(pack.getData(),0,pack.getLength());

if(message.equals("

bye"

jTextArea1.append("

对方已下线!

break;

}

jTextArea1.append("

接收到信息:

+message+"

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

privatevoidoKActionPerformed(ActionEventevt){

//System.out.println("

oK.actionPerformed,event="

+evt);

//TODOaddyourcodeforoK.actionPerformed

Stringmessage=jTextField1.getText();

bytebuffer[]=message.trim().getBytes();

发出的信息:

InetAddressaddress=InetAddress.getByName("

DatagramPacketdataPack=newDatagramPacket(buffer,buffer.length,address,8976);

DatagramSocketmailPack=newDatagramSocket();

mailPack.send(dataPack);

catch(Exceptione){}

privatevoidclearActionPerformed(ActionEventevt){

clear.actionPerformed,event="

//TODOaddyourcodeforclear.actionPerformed

jTextField1.setText("

privatevoidquitActionPerformed(java.awt.event.ActionEventevt){

Stringmessage="

;

bytebuffer[]=message.trim().getBytes();

您已退出程序!

+"

try{

DatagramPacketdataPack=newDatagramPacket(buffer,buffer.length,

address,inportnum);

}catch(Exceptione){

实验题5客户机之间通过服务器交换数据。

提示:

为了适应传输各种类型的数据,必须统一客户机的数据格式,为此可以将数据封装在一个对象中,数据传输以对象的形式传输。

因此必须定义一个数据封装的类,此类实现Serializable接口。

将对象写入文本

从文本读取打印结果

packagepackage5;

importjava.io.Serializable;

publicclassStudentimplementsSerializable{

Stringname=null;

intage=0;

publicStudent(Stringname,intage){

this.name=name;

this.age=age;

publicStringtoString(){

return("

姓名:

+name+"

年龄:

+age);

publicclassObjectInFile{

publicvoidwriterObject(){

FileoutF=newFile("

object.txt"

Student[]s=newStudent[4];

s[0]=newStudent("

1sadas"

21);

s[1]=newStudent("

2qwert"

22);

s[2]=newStudent("

3yuiop"

23);

s[3]=newStudent("

4mnbbv"

24);

FileOutputStreamfileOut=newFileOutputStream(outF);

ObjectOutputStreamobjectOut=newObjectOutputStream(fileOut);

for(inti=0;

i<

4;

i++){

objectOut.writeObject(s[i]);

objectOut.close();

fileOut.close();

System.out.println(e);

publicclassObjectOutFile{

publicvoidreaderObject(){

Students=newStudent("

0);

FileInputStreamfileIn=newFileInputStream(outF);

ObjectInputStreamobjectOut=newObjectInputStream(fileIn);

s=(Student)objectOut.readObject();

System.out.println(s.toString());

fileIn.close();

}catch(ClassNotFoundExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

3、实验总结:

刚开始做这次实验时,前两道题目感觉相对比较简单,很快就写完了。

在做第三题的时候就遇到了字符串的发送与接收不一致,接收到的字符串和发送的不一致就导致了服务器端不能正确的给客户端回馈信息。

最后使用了BufferedWriter、BufferedWriter这两个类才解决了这个问题。

还有UDP通信时端口占用也带来了很多的麻烦,在写第五题是感觉不知怎么入手,所以就把对象序列化后写入文件在读取出来。

经过这次试验,还是掌握了UDP通信和Socket通信,还复习了一下图形界面和添加响应事件。

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

当前位置:首页 > 考试认证 > 司法考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1