Java TCP使用Socket进行网络图片传送(6)

作者 : 卿笃军

原文地址:http://blog.csdn.net/qingdujun/article/details/39338831

本文演示,使用Socket进行网络图片传送,实现客户端的client.bmp文件上传到服务端。

1)客户端,上传client.bmp图片给服务端,并接受服务端返回的“上传成功”消息。

2)服务端,接受客户端的图片并保存为server.bmp,同时给客户端发送“上传成功”消息。

客户端,代码如下:

package upload.photo.client;

import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
//客户端:上传图片
public class CUploadPhotoClient {

	public static void main(String[] args) throws Exception{
		//1.连接诶服务器
		Socket s = new Socket("127.0.0.1",5612);
		System.out.println("已连接到服务器5612端口,准备传送图片...");
		//获取图片字节流
		FileInputStream fis = new FileInputStream("client.bmp");
		//获取输出流
		OutputStream out = s.getOutputStream();
		byte[] buf = new byte[1024];
		int len = 0;
		//2.往输出流里面投放数据
		while ((len = fis.read(buf)) != -1)
		{
			out.write(buf,0,len);
		}
		//通知服务端,数据发送完毕
		s.shutdownOutput();
		//3.获取输出流,接受服务器传送过来的消息“上传成功”
		InputStream in = s.getInputStream();
		byte[] bufIn = new byte[1024];
		int num = in.read(bufIn);
		System.out.println(new String(bufIn,0,num));
		//关闭资源
		fis.close();
		out.close();
		in.close();
		s.close();
	}
}

服务端,代码如下:

package upload.photo.server;

import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class CUploadPhotoServer {

	public static void main(String[] args) throws Exception{
		//1.服务器开始监听5612端口
		ServerSocket ss = new ServerSocket(5612);
		System.out.println("服务端已启动,正在监听5612端口...");
		//等待客户端
		Socket s = ss.accept();
		System.out.println("检测到客户端,准备数据接收...");
		//客户端已连接,获取输入流
		InputStream in = s.getInputStream();
		//创建图片字节流
		FileOutputStream fos = new FileOutputStream("server.bmp");
		byte[] buf = new byte[1024];
		int len = 0;
		//往字节流里写图片数据
		while ((len = in.read(buf)) != -1)
		{
			fos.write(buf,0,len);
		}
		//获取输出流,准备给客户端发送消息
		OutputStream out = s.getOutputStream();
		out.write("上传成功".getBytes());
		//关闭资源
		fos.close();
		in.close();
		out.close();
		s.close();
		ss.close();
	}

}

有不明白的地方,可以参考我上一篇文章:Java TCP使用Socket进行网络文件传送(5)

运行效果显示:

1)启动服务端

2)启动客户端

3)服务端显示结果

4)客户端图片储存位置

5)服务端储存图片位置

参考文献: Java视频 毕向东 主讲

原文地址:http://blog.csdn.net/qingdujun/article/details/39338831

时间: 2024-11-07 21:16:00

Java TCP使用Socket进行网络图片传送(6)的相关文章

Java TCP/UDP socket 编程流程总结

最近正好学习了一点用java socket编程的东西.感觉整体的流程虽然不是很繁琐,但是也值得好好总结一下. Socket Socket可以说是一种针对网络的抽象,应用通过它可以来针对网络读写数据.就像通过一个文件的file handler就可以都写数据到存储设备上一样.根据TCP协议和UDP协议的不同,在网络编程方面就有面向两个协议的不同socket,一个是面向字节流的一个是面向报文的. 对socket的本身组成倒是比较好理解.既然是应用通过socket通信,肯定就有一个服务器端和一个客户端.

Java TCP使用Socket进行网络通信(3)

作者 : 卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/39322051 本文演示,TCP使用Socket进行网络通信,建立简单的客户端,并使用客户端给服务器发送一条消息,服务端接收到后,将数据打印在控制台上. 1)客户端,发送一个消息给服务端. 2)服务端,接收到客户端的消息,并打印在控制台上. 客户端,代码如下: package tcp.clinet.qdj; import java.io.OutputStream; impo

Java TCP使用Socket进行网络文件传送(5)

作者 : 卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/39324737 本文演示,TCP使用Socket进行网络文件传送,实现将客户端的文件upload.txt上传到服务器. 1)客户端,上传文件upload.txt,并接受服务器反馈上传成功与否消息. 2)服务器,接受客户端文件,将接收到的文件命名为Rece.txt,同时给客户端发送消息"上传成功". 客户端,代码如下: package upload.file.cli

Java TCP使用Socket进行网络通信(4)之往返发送

作者 : 卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/39322613 本文演示,TCP使用Socket进行网络通信,实现客户端与服务器端数据的往返发送. 1)客户端,给服务器发送消息,并将接受到的服务器消息打印在客户端控制台上. 2)服务端,接受客户端消息,并打印在服务器开端控制台上,同时给客户端回复收到消息. 客户端,代码如下: package tcp.client2.qdj; import java.io.InputStr

【Java TCP/IP Socket】TCP Socket通信中由read返回值造成的的死锁问题(含代码)

书上示例 在第一章<基本套接字>中,作者给出了一个TCP Socket通信的例子——反馈服务器,即服务器端直接把从客户端接收到的数据原原本本地反馈回去. 书上客户端代码如下: import java.net.Socket; import java.net.SocketException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class TCPEch

一个项目看java TCP/IP Socket编程

前一段时间刚做了个java程序和网络上多台机器的c程序通讯的项目,遵循的是TCP/IP协议,用到了java的Socket编程.网络通讯是java的强项,用TCP/IP协议可以方便的和网络上的其他程序互通消息. 先来介绍下网络协议:     TCP/IP         Transmission Control Protocol 传输控制协议         Internet Protocol 互联网协议     UDP         User Datagram Protocol 用户数据协议

【Java TCP/IP Socket】UDP Socket(含代码)

转载请注明出处:http://blog.csdn.net/ns_code/article/details/14128987 UDP的Java支持 UDP协议提供的服务不同于TCP协议的端到端服务,它是面向非连接的,属不可靠协议,UDP套接字在使用前不需要进行连接.实际上,UDP协议只实现了两个功能: 1)在IP协议的基础上添加了端口: 2)对传输过程中可能产生的数据错误进行了检测,并抛弃已经损坏的数据. Java通过DatagramPacket类和DatagramSocket类来使用UDP套接字

【Java TCP/IP Socket】Socket编程知识点总结

简介 1.协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构.交换方式.包含的意义以及怎样对报文所包含的信息进行解析. 2.TCP/IP协议族有IP协议.TCP协议和UDP协议. 3.TCP协议和UDP协议使用的地址叫做端口号,用来区分同一主机上的不同应用程序.TCP协议和UDP协议也叫端到端传输协议,因为他们将数据从一个应用程序传输到另一个应用程序,而IP协议只是将数据从一个主机传输到另一个主机. 4.在TCP/IP协议中,有两部分信息用来确定一个指定的程序:互联网地址和端口号:

【Java TCP/IP Socket】基于线程池的TCP服务器(含代码)

了解线程池 在http://blog.csdn.net/ns_code/article/details/14105457(读书笔记一:TCP Socket)这篇博文中,服务器端采用的实现方式是:一个客户端对应一个线程.但是,每个新线程都会消耗系统资源:创建一个线程会占用CPU周期,而且每个线程都会建立自己的数据结构(如,栈),也要消耗系统内存,另外,当一个线程阻塞时,JVM将保存其状态,选择另外一个线程运行,并在上下文转换(context switch)时恢复阻塞线程的状态.随着线程数的增加,线