云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 第10章 网络编程_补充案例

第10章 网络编程_补充案例

  • 62 次阅读
  • 3 次下载
  • 2025/12/10 20:24:18

案例10-4 TCP网络程序

一、案例描述

1、 考核知识点

编号:00110008/00110009

名称:ServerSocket类/Socket类

2、 练习目标

? 通过编写简单的TCP程序,掌握ServerSocket、Socket类的具体用法。

3、 需求分析

ServerSocket用于负责监听某台计算机的某个端口号接收来自客户端的请求,是网络程序中的服务器端,Socket用于根据指定的IP地址和端口号向ServerSocket端交互,是网络程序中的客户端。为了让初学者掌握这两个类的作用,本案例将通过ServerSocket类和Socket类实现简单的数据通信,并通过观察两个命令行窗口中数据输出的先后顺序,从而增加对TCP网络程序中客户端和服务端的执行原理。

4、 设计思路(实现原理)

1) 编写服务器端类ServerDemo,在ServerDemo类中创建服务器端ServerSocket对象,并依次

编写监听连接、获取输入流,打印读取数据,释放资源等操作。

2) 编写客户端类ClientDemo,在ClientDemo类中创建客户端Socket对象,并分别编写建立连

接、获取输出流,释放资源等步骤。

3) 依次执行ServerDemo和ClientDemo类,观察命令行输出变化。

二、案例实现

TCP网络程序中服务端,代码如下:

import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket;

public class ServerDemo {

public static void main(String[] args) throws IOException {

// 获取输入流,读取数据,并显示

InputStream is = s.getInputStream(); byte[] bys = new byte[1024]; int len = is.read(bys);//阻塞 // 创建服务器端Socket对象

ServerSocket ss = new ServerSocket(10010);

System.out.println(\服务端已开启,等待客户端发送数据。\// 监听连接

Socket s = ss.accept();//阻塞

}

String client = new String(bys, 0, len); System.out.println(client);

}

// 释放资源

System.out.println(\已接收客户端发送的数据,服务端关闭。\s.close();

TCP网络程序中客户端,代码如下:

import java.io.IOException; import java.io.OutputStream; import java.net.Socket;

public class ClientDemo { }

}

// 释放资源

System.out.println(\发送完毕,关闭客户端服务。\s.close();

// 获取输出流,写数据即可

OutputStream os = s.getOutputStream(); os.write(\我来了\

public static void main(String[] args) throws IOException {

// 创建客户端的Socket对象,建立连接

Socket s = new Socket(\System.out.println(\客户端已打开,等待发送数据。\

首先开启服务端程序,运行结果如图10-8所示。

图10-8 运行结果

然后开启客户端程序,运行结果如图10-9所示。

图10-9 运行结果

此时,再观察服务端控制台的输出,运行结果如图10-10所示。

图10-10 运行结果

三、案例总结

1、在使用TCP协议编写网络程序时,服务端和客户端的端口号必须保持一致,否则会出现下列错误。

图10-11

2、通过学习UDP网络程序和TCP网络程序,会发现了他们都能实现数据的交互,那么他们有什么区别呢?

UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。

与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。 3、除了数据的安全性和完整性以外,TCP和UDP还有以下几点不同之处。

? 有序数据传输 ? 重发丢失的数据包 ? 舍弃重复的数据包 ? 无错误数据传输 ? 阻塞/流量控制

? 面向连接(确认有创建三方交握,连接已创建才作传输。)

案例10-5 使用TCP网络程序上传图片

一、案例描述

1、 考核知识点

编号:00110011

名称:TCP案例—文件上传

2、 练习目标

? 掌握如何使用TCP协议完成文件的网络传输功能。

3、 需求分析

由于TCP网络程序能够保证传输数据的完整性和安全性,所以大部分的服务器都会采用TCP协议来实现文件上传的功能。为了让初学者掌握如何使用TCP协议完成文件上传功能,本案例将通过使用TCP网络协议,实现图片上传的功能。

4、 设计思路(实现原理)

1) 编写服务器类PicUploadServer,该类包含一个Socket类型的私有属性,并提供了该属性的有

参构造方法。PicUploadServer类实现Runnable接口,重写run()方法,在run()方法内读取客户端上传的图片,并将图片存入服务器指定文件夹中。 2) 编写客户端类PicUpLoadClient,该类实现了读取指定图片,向指定端口发送图片数据的功能。 3) 编写测试类Example03,在main()方法中,通过指定的端口号创建ServerSocket对象,并编写

死循环,在死循环中,通过ServerSocket对象获取Socket对象,并开启线程服务。

二、案例实现

TCP网络程序中服务端,代码如下:

import java.util.*; import java.io.*; import java.net.*;

class PicUploadServer implements Runnable{

//包含Socket类型的私有属性 private Socket s ;

//包含Socket对象的有参构造函数

PicUploadServer (Socket s){this.s = s;} public void run(){

try{

File dir = new File(\if(!dir.exists()){ }

\dir.mkdirs();

String filename = dir+File.separator+System.currentTimeMillis()+

//读取客户端的字节数据\\

InputStream in = s.getInputStream(); byte[] bytes = new byte[1024]; int len = 0 ; //数据的目的

FileOutputStream fos = new FileOutputStream(filename); while((len = in.read(bytes))!=-1){ }

fos.write(bytes, 0, len);

搜索更多关于: 第10章 网络编程_补充案例 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

案例10-4 TCP网络程序 一、案例描述 1、 考核知识点 编号:00110008/00110009 名称:ServerSocket类/Socket类 2、 练习目标 ? 通过编写简单的TCP程序,掌握ServerSocket、Socket类的具体用法。 3、 需求分析 ServerSocket用于负责监听某台计算机的某个端口号接收来自客户端的请求,是网络程序中的服务器端,Socket用于根据指定的IP地址和端口号向ServerSocket端交互,是网络程序中的客户端。为了让初学者掌握这两个类的作用,本案例将通过ServerSocket类和Socket类实现简单的数据通信,并通过观察两个命令行窗口中数据输出的先后顺序,从而增加对TCP网络程序中客户端和服务端的执行原理。

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com