广工java作业

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《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

附录:源代码

客户端代码:

importjava、net、*;

import java、io、*;

publicclass Client

{

ﻩpublic staticvoidmain(String[]args)throwsIOException

ﻩ{

ﻩ// TODO Auto-generatedmethod stub

ﻩtry

ﻩSocket socket =newSocket("127、0、0、1",9);// 创建一个流套接字并将其连接到指定IP地址得指定端口号

BufferedReader buf = newBufferedReader(new InputStreamReader(System、in));//创建BufferedReader对象读取从键盘输入得字符

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

ﻩﻩBufferedWriter bufOut=newBufferedWriter(newOutputStreamWriter(so cket、getOutputStream(),"UTF-8"));

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

BufferedReader bufIn= newBufferedReader(new InputStreamReader(socket、getInputStream(),"UTF-8"));

String line = null;

while((line=buf、readLine())!= null)//读入一行字符串

{

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

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

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

ﻩﻩString str =bufIn、readLine();//读入从服务器得到得字符

if(!("Bye"、equals(str)))//如果从服务器读入得字符不就是"By e"

ﻩ{

ﻩSystem、out、print(str);//输出从服务器中读入得字符ﻩﻩSystem、out、println();

ﻩﻩ}

ﻩﻩelse

ﻩﻩ{

ﻩﻩSystem、out、println("Bye!");//如果从服务器读入得字符就是"Bye"则输出"Bye!"到客户端屏幕

break;//跳出循环

ﻩﻩ}

ﻩ}

//关闭流

socket、close();

ﻩﻩbuf、close();

ﻩﻩbufOut、close();

ﻩﻩﻩbufIn、close();

ﻩ}

catch(Exception e)//抛出异常

ﻩ{

e、printStackTrace();

}

服务器端代码:

importjava、io、*;

import java、net、*;

importjava、text、SimpleDateFormat;

importjava、util、*;

public class Server

public staticvoid main(String[]args)throws Exception

{

ﻩﻩ//TODOAuto-generatedmethod stub

ﻩtry

ﻩﻩ{

SuppressWarnings("resource")

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

ﻩﻩﻩfor(;;)

ﻩﻩ{

ﻩﻩtry

ﻩ{

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

ﻩﻩSystem、out、println("服务器已经启动!");

ﻩﻩﻩﻩnew Thread(newPaintThread(socket))、start();//当有请求时,启一个线程处理

ﻩﻩ}

ﻩﻩcatch(Exceptione)//抛出异常

ﻩﻩﻩ{

ﻩﻩe、printStackTrace();

ﻩ}

ﻩ}

ﻩﻩcatch(IOException e)

ﻩ{

ﻩﻩe、printStackTrace();

ﻩ}

相关文档
最新文档