教师:段鹏飞
实验5-实验目的
了解Java网络编程基础知识;掌握java.net包中关于网络的基本类及其属性和方法;掌握基于Socket的客户和服务器编程方法.
实验内容(必做)
编写程序,将前面课程所编写的档案管理系统从单机版改编成为客户机/服务器模式,实现档案文件在客户机和服务器之间的上传、下载.完成功能:1、建立服务器工程2、客户端选择一个文件上传后,客户端与服务器建立连接,将文件发送到服务器,服务器将文件接收并保存,同时将文件信息和保存的路径写入数据库.3、用户可以通过客户端文件列表进行文件下载操作(下载时,客户端将文件ID发给服务器,服务器通过ID在数据库中查找到相应的文件路径信息,然后读取文件,通过网络将文件发送给客户端).
实验内容(选做)
1、客户端不能连接数据库,只有通过服务器端程间接访问数据库.2、客户端通过服务器端获取文件的列表信息,并在客户端界面上进行列表显示.3、客户端通过服务器完成对用户的增、删、查、改.提示:1、在网络这一块,开一个端口就好了,网络通信采用"请求-应答"的思想,也就是说,客户端向服务器提交一个请求,服务器生成相应的结果,返回给客户端.2、采用对象串行化的思想,定义一个类进行数据传输.(参考课本235页)
对象串行化(仅供参考)
Socket应用
客户端与服务器端的实现
客户端
服务器端
* 8.5
Socket
. 8.5
Socket
创建服务器(端口号)
定义数据成员
服务器等待网络连接
建立socket流
读客户
端信息
向用户发出一个字符串
创建Socket实例
定义数据成员
建立socket流读socket流(接收并显示)
送用户名给服务器
关闭流
waiting
for
user
127.0.0.1
1111
1111
login:
connetcting
client...
java
提示用户登录成功
读socket流User
:java
Login
successful
* Socket应用
ServerSocket
s = null;String
hello
= "Hello
World!";try
{s = new
ServerSocket(5432);}
catch(IOException
e) {System.out.println(e);System.exit(1);}while(true)
{try
{Socket
cs = s.accept();OutputStream
out
= cs.getOutputStream();DataOutputStream
dos
= new
DataOutputStream(out);dos.writeUTF(hello);out.close();cs.close();}
catch(IOException
e) { System.out.println(e);
}} me.whut.edu.cnServerSocket
LocalhostSocket
OutputStream
InputStream
InputStream
OutputStream
接收连接
打开输出流
写入输出流
关闭输出流
关闭连接
监听端口
* Socket应用
对客户端对Socket进行读写-实例
import
java.net.*;import
java.io.*;public
class
SimpleClient
{public
static
void
main(String
args[])
{Socket
s = new
Socket("me.whut.edu.cn",
5432);InputStream
in = s.getInputStream();DataInputStream
dis
= new
DataInputStream(in);String
st = dis.readUTF();System.out.println(st);in.close();s.close();}}
me.whut.edu.cnServerSocket
LocalhostSocket
OutputStream
InputStream
InputStream
OutputStream