Java网络编程:Socket 通信 2
client----发送数据(输出流)------------(输入)-【管道流处理数据】-(输出)------接收数据(输入流)------server
文件传输:
客户端:
创建Socket连接对象:创建它对应的对接的iP和端口。。。
创建一个输出流
传入文件需要文件流:读取文件 写出文件
通知 服务器我传输完成
接受服务器发过来的
- 关闭资源
1 package Demo1.JavaSe.javasocket;
2
3 import java.io.*;
4 import java.net.InetAddress;
5 import java.net.Socket;
6 import java.net.UnknownHostException;
7
8 //文件上传操作
9 public class JavaDemo2 {
10 //客户端
11 public static void main(String[] args) throws Exception {
12 //client----发送数据(输出流)------------(输入)-【管道流处理数据】-(输出)------接收数据(输入流)------server
13
14
15
16 // 1.创建Socket连接对象:创建它对应的对接的iP和端口。。。
17 Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),9999);
18 //2.创建一个输出流
19 OutputStream outputStream = socket.getOutputStream();
20 //3.传入文件需要文件流
21 //读取文件
22 FileInputStream myFileStream = new FileInputStream(new File("src/a123.jpg"));
23 //写出文件
24 byte[] buffer = new byte[1024];
25 int len;
26 while ((len=myFileStream.read(buffer))!=-1){
27 outputStream.write(buffer,0,len);
28 }
29 //同知服务器我传输完成
30 socket.shutdownOutput();
31 System.out.println("上传成功");
32
33 //接受服务器发过来的
34 InputStream isput = socket.getInputStream();
35 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
36 byte[] buffer2 = new byte[1024];
37 int len2;
38 while ((len2=isput.read(buffer2))!=-1){
39 byteArrayOutputStream.write(buffer2,0,len2);
40 }
41 //打印服务端的确认消息
42 System.out.println(byteArrayOutputStream.toString());
43
44 //关闭资源
45 byteArrayOutputStream.close();
46 isput.close();
47
48 myFileStream.close();
49 outputStream.close();
50 socket.close();
51
52
53
54 }
55
56 }
服务器:
建服务。ServerSocket。。。
监听客户端消息:Socket accept = serverSocket.accept();//阻塞式监听
传入文件需要文件流:读取文件 写出文件
获取输入流
文件输出流:输入流 把信息读取到 缓冲区 返回字节数:文件输出流写入文件
- 反馈给客户端消息,关闭
package Demo1.JavaSe.javasocket; import java.io.*;
import java.net.ServerSocket;
import java.net.Socket; public class JavaDemo2Server {
//服务端
public static void main(String[] args) throws IOException {
//1.创建服务。
ServerSocket serverSocket = new ServerSocket(9999);
//2.监听客户端消息
Socket accept = serverSocket.accept();//阻塞式监听
//3.获取输入流
InputStream iput = accept.getInputStream();
//4.文件输出
FileOutputStream receive = new FileOutputStream(new File("receive.jpg"));
byte[] buffer = new byte[1024];
int len;
//输入流 把信息读取到 缓冲区 返回字节数
while ((len = iput.read(buffer))!=-1){
receive.write(buffer,0,len);
}
System.out.println("接受成功"+len+"字节数"); //反馈给客户端
OutputStream outputStream = accept.getOutputStream();
outputStream.write("来自服务器的确认消息!".getBytes()); //5.关闭
receive.close();
iput.close();
serverSocket.close(); }
}
Java网络编程:Socket 通信 2的更多相关文章
- java网络编程Socket通信详解
Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术. ...
- Java网络编程Socket通信
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议 UDP (User Datagram Proto ...
- java网络编程socket\server\TCP笔记(转)
java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04| 分类: Socket | 标签:java |举报|字号 订阅 1 TCP的开销 a ...
- java网络编程socket解析
转载:http://www.blogjava.net/landon/archive/2013/07/02/401137.html Java网络编程精解笔记2:Socket详解 Socket用法详解 在 ...
- Java网络编程——Socket
网络是连接不同计算机的媒介,不同的计算机依靠网络来互相通信,即传递数据. Java中与网络编程相关的部分主要是Socket(套接字),它作为一种抽象的结构,实现了与通信相关的各类方法,构成一套完整的通 ...
- Java网络编程UDP通信原理
前言 继续今天我们的Java网络编程--TCP和UDP通信 一.TCP和UDP概述 传输层通常以TCP和UDP协议来控制端点与端点的通信 TCP UDP 协议名称 传输控制协议 用户数据包协议 是 ...
- day05 Java网络编程socket 与多线程
java网络编程 java.net.Socket Socket(套接字)封装了TCP协议的通讯细节,是的我们使用它可以与服务端建立网络链接,并通过 它获取两个流(一个输入一个输出),然后使用这两个流的 ...
- JAVA网络编程Socket常见问题 【长连接专题】
一. 网络程序运行过程中的常见异常及处理 第1个异常是 java.net.BindException:Address already in use: JVM_Bind. 该异常发生在服务器端进行new ...
- UNIX网络编程——Socket通信原理和实践
我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠so ...
- java网络编程——socket实现简单的CS会话
还记得当年学计网课时用python实现一个简单的CS会话功能,这也是学习socket网络编程的第一步,现改用java重新实现,以此记录. 客户端 import java.io.*; import ja ...
随机推荐
- Flink SQL 子图复用逻辑分析
子图复用优化是为了找到SQL执行计划中重复的节点,将其复用,避免这部分重复计算的逻辑.先回顾SQL执行的主要流程 parser -> validate -> logical optimiz ...
- Netty 学习(三):通信协议和编解码
Netty 学习(三):通信协议和编解码 作者: Grey 原文地址: 博客园:Netty 学习(三):通信协议和编解码 CSDN:Netty 学习(三):通信协议和编解码 无论使用 Netty 还是 ...
- Django 创建 APP和目录结构介绍
一.通过pip安装Django 以windows 系统中使用pip命令安装为例 win+r,调出cmd,运行命令:pip install django自动安装PyPi 提供的最新版本.指定版本,可使用 ...
- 查看pod对应的DNS域名
单个pod # kubectl exec redis-pod-0 -n cluster-redis -- hostname -f redis-pod-0.redis-cluster-service.c ...
- 安全强化Linux 服务器的七个步骤
这篇入门文章将向你介绍基本的 Linux 服务器安全知识.虽然主要针对 Debian/Ubuntu,但是你可以将此处介绍的所有内容应用于其他 Linux 发行版.我也鼓励你研究这份材料,并在适用的情况 ...
- 【前端必会】tapable、hook,webpack的灵魂
背景 什么是tapable.hook,平时做vue开发时的webpack 配置一直都没弄懂,你也有这种情况吗? 还是看源码,闲来无聊又看一下webpack的源码,看看能否找到一些宝藏 tapable和 ...
- day08-MySQL事务
MySQL事务 先来看一个例子 有一张balance表: 需求:将tom的100块钱转到King账户中 执行的操作是: update balance set money = money -100 wh ...
- 达梦dba_segments指定表名查询到的大小都包含哪些数据
一.结论 dba_segments指定表名查询到的段大小包含索引.约束.表字段数据(包含LOB字段)(1)表(不包含LOB字段)创建默认分配2个簇,1个簇用于存放表结构及字段数据,1个簇用于存放clu ...
- Linux中CentOS 7版本安装JDK、Tomcat、MySQL、lezsz、maven软件详解
软件安装 在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下: 安装方式 特点 二进制发布包安装 软件已经针对具体平台编译打包发布,只要解压,修改配置即可 rpm安装 软件已经按照 ...
- 那齐博x3又什么什么?
那齐博x3又什么什么? 齐博x3是齐博X1/齐博x2之后的升级版本. 主要优化圈子系统