关键词:
服务端代码
/*
文件上传案例服务器端:读取客户端上传的文件,保存到服务器的硬盘,给客户端回写"上传成功"
明确:
数据源:客户端上传的文件
目的地:服务器的硬盘 d:\\\\upload\\\\1.jpg
实现步骤:
1.创建一个服务器ServerSocket对象,和系统要指定的端口号
2.使用ServerSocket对象中的方法accept,获取到请求的客户端Socket对象
3.使用Socket对象中的方法getInputStream,获取到网络字节输入流InputStream对象
4.判断d:\\\\upload文件夹是否存在,不存在则创建
5.创建一个本地字节输出流FileOutputStream对象,构造方法中绑定要输出的目的地
6.使用网络字节输入流InputStream对象中的方法read,读取客户端上传的文件
7.使用本地字节输出流FileOutputStream对象中的方法write,把读取到的文件保存到服务器的硬盘上
8.使用Socket对象中的方法getOutputStream,获取到网络字节输出流OutputStream对象
9.使用网络字节输出流OutputStream对象中的方法write,给客户端回写"上传成功"
10.释放资源(FileOutputStream,Socket,ServerSocket)
*/
public class TcpServer
public static void main(String[] args) throws IOException
//1.创建一个服务器ServerSocket对象,和系统要指定的端口号
ServerSocket server = new ServerSocket(8888);
//2.使用ServerSocket对象中的方法accept,获取到请求的客户端Socket对象
/*
让服务器一直处于监听状态(死循环accept方法)
有一个客户端上传文件,就保存一个文件
*/
while(true)
Socket socket = server.accept();
/*
使用多线程技术,提高程序的效率
有一个客户端上传文件,就开启一个线程,完成文件的上传
*/
new Thread(new Runnable()
//完成文件的上传
@Override
public void run()
try
//3.使用Socket对象中的方法getInputStream,获取到网络字节输入流InputStream对象
InputStream is = socket.getInputStream();
//4.判断d:\\\\upload文件夹是否存在,不存在则创建
File file = new File("d:\\\\upload");
if(!file.exists())
file.mkdirs();
/*
自定义一个文件的命名规则:防止同名的文件被覆盖
规则:域名+毫秒值+随机数
*/
String fileName = "itcast"+System.currentTimeMillis()+new Random().nextInt(999999)+".jpg";
//5.创建一个本地字节输出流FileOutputStream对象,构造方法中绑定要输出的目的地
//FileOutputStream fos = new FileOutputStream(file+"\\\\1.jpg");
FileOutputStream fos = new FileOutputStream(file+"\\\\"+fileName);
//6.使用网络字节输入流InputStream对象中的方法read,读取客户端上传的文件
int len =0;
byte[] bytes = new byte[1024];
while((len = is.read(bytes))!=-1)
//7.使用本地字节输出流FileOutputStream对象中的方法write,把读取到的文件保存到服务器的硬盘上
fos.write(bytes,0,len);
//8.使用Socket对象中的方法getOutputStream,获取到网络字节输出流OutputStream对象
//9.使用网络字节输出流OutputStream对象中的方法write,给客户端回写"上传成功"
socket.getOutputStream().write("上传成功".getBytes());
//10.释放资源(FileOutputStream,Socket,ServerSocket)
fos.close();
socket.close();
catch (IOException e)
System.out.println(e);
).start();
//服务器就不用关闭
//server.close();
客户端代码:
/*
文件上传案例的客户端:读取本地文件,上传到服务器,读取服务器回写的数据
明确:
数据源:c:\\\\1.jpg
目的地:服务器
实现步骤:
1.创建一个本地字节输入流FileInputStream对象,构造方法中绑定要读取的数据源
2.创建一个客户端Socket对象,构造方法中绑定服务器的IP地址和端口号
3.使用Socket中的方法getOutputStream,获取网络字节输出流OutputStream对象
4.使用本地字节输入流FileInputStream对象中的方法read,读取本地文件
5.使用网络字节输出流OutputStream对象中的方法write,把读取到的文件上传到服务器
6.使用Socket中的方法getInputStream,获取网络字节输入流InputStream对象
7.使用网络字节输入流InputStream对象中的方法read读取服务回写的数据
8.释放资源(FileInputStream,Socket)
*/
public class TcpClient
public static void main(String[] args) throws IOException
//1.创建一个本地字节输入流FileInputStream对象,构造方法中绑定要读取的数据源
FileInputStream fis = new FileInputStream("C:\\\\Users\\\\Administrator\\\\Desktop\\\\微信支付\\\\20221024093601.png");
//2.创建一个客户端Socket对象,构造方法中绑定服务器的IP地址和端口号
Socket socket = new Socket("127.0.0.1",8888);
//3.使用Socket中的方法getOutputStream,获取网络字节输出流OutputStream对象
OutputStream os = socket.getOutputStream();
//4.使用本地字节输入流FileInputStream对象中的方法read,读取本地文件
int len = 0;
byte[] bytes = new byte[1024];
while((len = fis.read(bytes))!=-1)
//5.使用网络字节输出流OutputStream对象中的方法write,把读取到的文件上传到服务器
os.write(bytes,0,len);
/*
解决:上传完文件,给服务器写一个结束标记
void shutdownOutput() 禁用此套接字的输出流。
对于 TCP 套接字,任何以前写入的数据都将被发送,并且后跟 TCP 的正常连接终止序列。
*/
socket.shutdownOutput();
//6.使用Socket中的方法getInputStream,获取网络字节输入流InputStream对象
InputStream is = socket.getInputStream();
//7.使用网络字节输入流InputStream对象中的方法read读取服务回写的数据
while((len = is.read(bytes))!=-1)
System.out.println(new String(bytes,0,len));
//8.释放资源(FileInputStream,Socket)
fis.close();
socket.close();
java中socket实现最简单的客户端与服务端通信
Java中Socket实现最简单的客户端与服务端通信引言:因为最近项目中要接入某通信协议接口,基于TCP/IP的socket接口。于是就在本地弄一个最简单的Socket通信仅供学习。话不多说,直接开摆客户端代码packagetest;importjava.io.*;importjava.ne... 查看详情
用网页实现断点续传(http)
...接操作2、服:使用ServerSocket.accept()方法进行阻塞,接收客户端请求3、服:每接收到一个Socket就建立一个新的线程来处理它4、客:利用Socket进行远程连接,询问已上传进度5、客:使用FileInputStream.skip(longlength)从指定位置读取文件... 查看详情
java中socket实现最简单的客户端与服务端通信(代码片段)
Java中Socket实现最简单的客户端与服务端通信引言:因为最近项目中要接入某通信协议接口,基于TCP/IP的socket接口。于是就在本地弄一个最简单的Socket通信仅供学习。话不多说,直接开摆客户端代码packagetest;importjava.io.*;importjava.ne... 查看详情
求超大文件上传方案(vue)
...接操作2、服:使用ServerSocket.accept()方法进行阻塞,接收客户端请求3、服:每接收到一个Socket就建立一个新的线程来处理它4、客:利用Socket进行远程连接,询问已上传进度5、客:使用FileInputStream.skip(longlength)从指定位置读取文件... 查看详情
java多线程实现文件上传(代码片段)
importjava.io.*;importjava.net.Socket;/*客户端:数据来自于文本文件,接收服务器反馈*/publicclassClientDemopublicstaticvoidmain(String[]args)throwsIOException//创建客户端Socket对象Sockets=newSocket("192.168.1.66",10000);//封装文本文件的数据Buf... 查看详情
tcp通信程序练习6——多线程实现文件上传(代码片段)
客户端代码:publicclassClientDemopublicstaticvoidmain(String[]args)throwsIOException//创建客户端Scoket对象Sockets=newSocket("192.168.50.76",44444);//封装文本文件数据BufferedReaderbr=newBufferedReader(newFileReader("myNe 查看详情
java大文件断点续传
...接操作2、服:使用ServerSocket.accept()方法进行阻塞,接收客户端请求3、服:每接收到一个Socket就建立一个新的线程来处理它4、客:利用Socket进行远程连接,询问已上传进度5、客: 查看详情
c#winform多线程socket文件上传,下载
一个S,服务器端N个C,客户端上传S随时监听端口,C发来上传文件请求后开始接收文件,如果网络中断,下次C再连接的时候,可以支持上一次文件断点续传下载S随时监听端口,C发来下载文件请求后开始发送文件,如果网络中断,... 查看详情
java网络编程----tdp进阶篇上传文本文件
设计需求:从客户端上传txt文件到服务器,服务端收到文件后,发送消息给客户端接收完成。1.服务器端:publicclassUpLoadFileServer{publicstaticvoidmain(String[]args)throwsException{ ServerSocketss=newServerSocket(10010); Sockets=ss.accept();BufferedRe 查看详情
java应用使用网络编程进行socket通信
...换的过程。网络编程可以帮助我们构建分布式系统,实现客户端与服务器之间的数据通信,以及实现点对点之间的通信等。1.2什么是socket通信Socket通信是网络编程中最常见的一种通信方式,它基于TCP/IP协议栈,通过网络建立两台... 查看详情
socket通信综合示例
...存到数据库,并提示数据库注册成功,请登录2用户登录客户端选择‘登录以后’后,提示输入用户名和密码,验证成功则提示上传文件,验证失败则给出提示信息,并可以重新登录3文件上传客户端输入上传文件的路径,并读取... 查看详情
java中的socket编程是作啥的
...哪方向的?需要掌握吗?Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一。如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的。本文会介绍一下基于TCP/IP的Socket编程,并且如何写... 查看详情
java系列讲座二:socket网络通信实现聊天软件项目讲解(udp)
上一篇我们讲了通过TCP方式实现网络通信软件开发的原理,思路及实现,今天跟大家谈谈Socket通信中UDP方式通信的软件开发步骤及主要代码讲解,UDP实现方式实现的通信软件特点是不分客户端与服务器端,一个... 查看详情
java系列讲座二:socket网络通信实现聊天软件项目讲解(udp)
上一篇我们讲了通过TCP方式实现网络通信软件开发的原理,思路及实现,今天跟大家谈谈Socket通信中UDP方式通信的软件开发步骤及主要代码讲解,UDP实现方式实现的通信软件特点是不分客户端与服务器端,一个... 查看详情
java使用socket实现通信
客户端程序packagecom.jun.client;importjava.io.*;importjava.net.Socket;importjava.util.Scanner;/***〈客户端程序〉<br>**@author未绪*@time2018/2/1612:42*/publicclassClientprivateSocketsocket;publicClient 查看详情
java是如何实现聊天功能的?
Java可以使用Socket编程实现聊天功能。Socket是一种网络通信协议,它可以在不同的主机之间传输数据。在聊天功能中,一般有客户端和服务器两个角色。客户端是发送消息的一方,它需要创建一个Socket对象,指定要连接的服务器... 查看详情
java多线程实现多客户端socket通信
一、服务端packagecom.czhappy.hello.socket;importjava.io.IOException;importjava.net.InetAddress;importjava.net.ServerSocket;importjava.net.Socket;publicclassServer{publicstaticvoidmain(String[]args){//创建Ser 查看详情
hadoop学习2
...录4.移动文件5.新建文件夹6.移除文件夹编写Java程序实现客户端和服务器端的socket信息交互以及函数调用实现机制RPC主要步骤如下:1.将本地socket以及接口类封装为一个proxy,生成动态本地代理实例。2.该实例调用相对应的函数并... 查看详情