广工java作业教学内容.docx

上传人:b****8 文档编号:28422834 上传时间:2023-07-13 格式:DOCX 页数:9 大小:88.68KB
下载 相关 举报
广工java作业教学内容.docx_第1页
第1页 / 共9页
广工java作业教学内容.docx_第2页
第2页 / 共9页
广工java作业教学内容.docx_第3页
第3页 / 共9页
广工java作业教学内容.docx_第4页
第4页 / 共9页
广工java作业教学内容.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

广工java作业教学内容.docx

《广工java作业教学内容.docx》由会员分享,可在线阅读,更多相关《广工java作业教学内容.docx(9页珍藏版)》请在冰豆网上搜索。

广工java作业教学内容.docx

广工java作业教学内容

 

广工java作业

《Java语言》课程作业

(第二次)

 

题目第15题

学院计算机学院

专业网络工程

班别

学号

姓名

2015年5月16日

一、课程题目

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

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

客户端服务器端

 

二、题目分析与设计

1.本题目要求创建一个客户端与服务器,两者能进行通信连接,客户端能从服务器获取服务器当前时间,能向服务器申请关闭连接。

本题目主要用到Date类、SimplDateFormat类、socket类、SocketServer类、还有线程类等。

2.本题目没有界面,没有用到界面组件。

3.服务器端主程序监听某一个端口,客户端发起连接请求,服务器端主程序接收请求,同时构造一个线程类,用于接管会话。

当一个Socket会话产生后,这个会话就会交给线程进行处理,主程序继续进行监听。

实现程序流程是:

客户端和服务器建立连接,客户端发送消息,服务端根据消息进行处理并返回相关消息,若客户端申请关闭,则服务器关闭此连接,双方通讯结束。

4.使用的开发环境是Eclipse。

关键代码主要是I/O输出输入流,还有线程、套接字的连接。

三、测试分析

预测结果:

当客户端输入Time时,服务器输出字符Time到屏幕返回服务器当前时间到客户端,客户端接收从服务器发来的时间并且输出到屏幕。

当客户端向服务器发送字符Exit时,服务器向客户端发送字符Bye然后客户端输出字符Bye到屏幕。

下面图1是服务器的结果,图2是客户端的结果,与预测结果一样。

图1

图2

附录:

源代码

客户端代码:

import.*;

importjava.io.*;

publicclassClient

{

publicstaticvoidmain(String[]args)throwsIOException

{

//TODOAuto-generatedmethodstub

try

{

Socketsocket=newSocket("127.0.0.1",9);//创建一个流套接字并将其连接到指定IP地址的指定端口号

BufferedReaderbuf=newBufferedReader(newInputStreamReader(System.in));//创建BufferedReader对象读取从键盘输入的字符

//由Socket对象得到输出流,并构造相应的BufferedWriter对象,设置输入字符格式为UTF-8类型

BufferedWriterbufOut=newBufferedWriter(newOutputStreamWriter(socket.getOutputStream(),"UTF-8"));

//由Socket对象得到输入流,并构造相应的BufferedReader对象,设置输入字符格式为UTF-8类型

BufferedReaderbufIn=newBufferedReader(newInputStreamReader(socket.getInputStream(),"UTF-8"));

Stringline=null;

while((line=buf.readLine())!

=null)//读入一行字符串

{

bufOut.write(line);//输出读入的字符到服务器

bufOut.newLine();//输出读入的一行字符到服务器后换行

bufOut.flush();//刷新输出流,使服务器马上收到该字符

Stringstr=bufIn.readLine();//读入从服务器得到的字符

if(!

("Bye".equals(str)))//如果从服务器读入的字符不是"Bye"

{

System.out.print(str);//输出从服务器中读入的字符

System.out.println();

}

else

{

System.out.println("Bye!

");//如果从服务器读入的字符是"Bye"则输出"Bye!

"到客户端屏幕

break;//跳出循环

}

}

//关闭流

socket.close();

buf.close();

bufOut.close();

bufIn.close();

}

catch(Exceptione)//抛出异常

{

e.printStackTrace();

}

}

}

服务器端代码:

importjava.io.*;

import.*;

importjava.text.SimpleDateFormat;

importjava.util.*;

publicclassServer

{

publicstaticvoidmain(String[]args)throwsException

{

//TODOAuto-generatedmethodstub

try

{

@SuppressWarnings("resource")

ServerSocketserver=newServerSocket(9);//创建一个ServerSocket在端口9监听客户请求

for(;;)

{

try

{

Socketsocket=server.accept();//侦听并接受到此Socket的连接,请求到来则产生一个Socket对象,并继续执行

System.out.println("服务器已经启动!

");

newThread(newPaintThread(socket)).start();//当有请求时,启一个线程处理

}

catch(Exceptione)//抛出异常

{

e.printStackTrace();

}

}

}

catch(IOExceptione)

{

e.printStackTrace();

}

}

}

classPaintThreadimplementsRunnable//新建一个线程类并继承Runnable接口

{

privateSocketsocket;

//创建SimpleDataFormat类对象设置时间格式

SimpleDateFormatdateFormat=newSimpleDateFormat("HH:

mm:

ss",Locale.ENGLISH);

publicPaintThread(Socketsocket)

{

this.socket=socket;

}

publicvoidrun()

{

try

{

//由Socket对象得到输入流,并构造相应的BufferedReader对象,设置输入字符格式为UTF-8类型

BufferedReaderbufIn=newBufferedReader(newInputStreamReader(socket.getInputStream(),"UTF-8"));

//由Socket对象得到输出流,并构造相应的BufferedWriter对象,设置输入字符格式为UTF-8类型

BufferedWriterbufOut=newBufferedWriter(newOutputStreamWriter(socket.getOutputStream(),"UTF-8"));

Stringline=null;

while((line=bufIn.readLine())!

=null)//读入一行从客户端发过来的字符

{

if("Time".equals(line)||"time".equals(line))//当客户端输入Time时服务器返回当前时间给客户端

{

Stringdata=dateFormat.format(newDate());

bufOut.write("现在的时间是:

"+data);

bufOut.newLine();

bufOut.flush();

System.out.println(line);

}

if("Exit".equals(line)||"exit".equals(line))////客户端申请退出,服务端返回确认退出

{

bufOut.write("Bye");

bufOut.newLine();

bufOut.flush();

break;

}

}

System.out.println("连接已经断开!

");

bufIn.close();//关闭流

bufOut.close();

socket.close();

}

catch(IOExceptione)

{

e.printStackTrace();

}

}

}

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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