class My Server extends Thread public My Server
创建服务器类 class My. Server extends Thread { public My. Server(){ try{ //创建Server. Socket对象,监听端口为 2001 server. Socket = new Server. Socket(2001); } catch(IOException e){ System. out. println(“server is not start”+ e); } System. out. println(“Server is listening …”); this. start(); //引发监听线程 } }
确定监听机制 v 服务器的run()方法主要是进行监听 作。 public void run() { try{ //无限循环 while(true) { //调用了阻塞方式的accept()方法 Socket client = server. Socket. accept(); //accept()接收到客户请求返回,创建Data. Commutation对象 Data. Commutation com = new Data. Commutation(client); com. start(); } } catch(IOException e){ System. out. println(“listening is error ”+e); } }
v // Data. Commutation线程类代码 Class Data. Commutation extends Thread { Customer customer = null; //定义对象输入流类 Object. Input. Stream stream. From. Client = null; Public Data. Commutation(Socket in. From. Client){ try{ //将套接字对象输入流创建为对象输入流 stream. From. Client = new Object. Input. Stream(in. From. Client. get. Input. Stream()); try{ //从输入流读取对象 customer = (Customer)stream. From. Client. read. Object(); } //捕捉异常…… }
public void run(){ try{ //创建文件输出流对象,customer. dat是存放资料的文件 File. Output. Stream fp = new File. Output. Stream(“customer. dat”); //将文件输出流创建为对象输出流 Object. Output. Stream stream. Output. File = new Object. Output. Stream(fp); //输出customer对象到文件 stream. Output. File. write. Object(customer); //关闭流对象 stream. Output. File. close(); fp. close(); } //捕捉异常…… } }// Data. Commutation线程类结束
知识点 v v Object. Input. Stream类 Object. Output. Stream类 Invalid. Class. Exception异常类 Not. Serializable. Exception异常类
打包数据 客户资料是以对象的形式发送,所以数据必须被写入到Customer对象中,然后发 送给服务器。 class Customer implements java. io. Serializable { String custom. ID; String name; String sex; String age; String address; String phone; String e_mail; } //网络上传输的对象必须实现java. io. Serializable接口 v
确定向服务器提交数据的机制 v 当用户点击submit按钮时,连接服务器,向服务器发送数据。 public void action. Performed(Action. Event evt) { Object obj = evt. get. Source(); if(obj == button. Submit){ //创建一Customer对象,将客户资料写入Customer对象 try{ //创建一客户套接字,连接服务器 Socket to. Server = new Socket("127. 0. 0. 1", 2001); //创建对象输出流,将数据写入套接字 Object. Output. Stream stream. To. Server = New Object. Output. Stream(to. Server. get. Output. Stream()); stream. To. Server. write. Object(customer); //关闭对象输出流 stream. To. Server. close(); } } }
- Slides: 33