上传文件和图片格式
客户端:
1.建立socket客户端,连接服务,要有目标ip和端口
2.读取本地文件的内容
3.输出到服务器端:通过socket的输出流
4.传输结束:socket的shutdownOutput()
5.接受服务端传过来的上传成功提示:通过socket的输入流
6.关闭资源。
服务器端
1.建立ServerSocket服务,监听一个端口
2.通过accept方法产生一个socket对象,与客户端建立通道。
3.通过socket的输入流读取客户端穿过来信息。
4.将获取到的信息保存到文件。
5.向客户端发出上传成功提示。
6.关闭资源
实例1:上传文件:
客户端:
package net.csdn.web;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class TcpTextClient {
/**
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws UnknownHostException, IOException {
// TODO Auto-generated method stub
Socket s = new Socket("192.168.49.59",9009);
BufferedReader br=new BufferedReader(new FileReader("d:\\1.txt"));
PrintWriter pwout = new PrintWriter(s.getOutputStream(),true);
String line = null;
while((line = br.readLine())!=null){
pwout.println(line);
}
s.shutdownOutput();
BufferedReader brin = new BufferedReader(new InputStreamReader(s.getInputStream()));
System.out.println(brin.readLine());
br.close();
s.close();
}
}
服务端:
package net.csdn.web;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpTextServer {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ServerSocket ss = new ServerSocket(9009);
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"....connection");
BufferedReader brin = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter pw=new PrintWriter(new FileWriter("e:\\server.txt"),true);
String line=null;
while((line=brin.readLine())!=null){
pw.println(line);
}
PrintWriter pwout=new PrintWriter(s.getOutputStream(),true);
pwout.println("上传成功");
pw.close();
s.close();
ss.close();
}
}
实例二:上传图片
客户端:
package net.csdn.web;
import java.net.*;
import java.io.*;
public class JpgClient {
/**
* @param args
*/
public static void main(String[] args)throws Exception {
Socket s=new Socket("192.168.49.59",9009);
FileInputStream fis=new FileInputStream("d:\\2.jpg");
OutputStream out=s.getOutputStream();
byte[] buf=new byte[1024];
int len=0;
while((len=fis.read(buf))!=-1){
out.write(buf, 0, len);
}
s.shutdownOutput();
InputStream in=s.getInputStream();
byte[] b=new byte[1024];
int num=in.read(b);
System.out.println(new String(b,0,num));
fis.close();
s.close();
}
}
服务端:
package net.csdn.web;
import java.net.*;
import java.io.*;
public class JpgServer {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
ServerSocket ss=new ServerSocket(9009);
Socket s=ss.accept();
InputStream in=s.getInputStream();
FileOutputStream fos=new FileOutputStream("e:\\1.jpg");
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();
s.close();
ss.close();
}
}
实例三:
客户端:
package net.csdn.web;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class TcpClient2 {
public static void main(String[] args) throws Exception {
Socket s=new Socket("192.168.49.59",9009);
//获取键盘录入
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//数据输出给服务器端
OutputStream out=s.getOutputStream();
BufferedWriter bwout=new BufferedWriter(new OutputStreamWriter(out));
//获取服务器端返回的数据
BufferedReader brin=new BufferedReader(new InputStreamReader(s.getInputStream()));
String line=null;
while((line=br.readLine())!=null){
if(line.equals("over"))
break;
bwout.write(line);
bwout.newLine();
bwout.flush();
String str=brin.readLine();
System.out.println("server:"+str);
}
br.close();
s.close();
}
}
服务端:加入多线程内容
package net.csdn.web;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class JpgServer2 {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
ServerSocket ss=new ServerSocket(9009);
while(true){
Socket s=ss.accept();
new Thread(new JpgThread(s)).start();
}
//ss.close();
}
}
class JpgThread implements Runnable{
private Socket s;
public JpgThread(Socket s){
this.s=s;
}
@Override
public void run() {
int count=1;
try{
String ip=s.getInetAddress().getHostAddress();
System.out.println(ip+"---connection");
InputStream in=s.getInputStream();
File dir=new File("d:\\picture");
File f=new File(dir,ip+"("+count+").jpg");
while(f.exists())
f=new File(dir,ip+"("+(count++)+").jpg");
FileOutputStream fos=new FileOutputStream(f);
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();
s.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
分享到:
相关推荐
ruoyi-vue-pro-vben 芋道管理后台,基于 vben 最新版本,最新的 vue3 vite4 ant-design-vue 4.0 typescript 语法进行重构开发,支持 springboot3 springcloud 版本
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
该项目是一个基于Java语言开发的水果管理系统设计源码,包含53个文件,其中包括30个Java源文件、13个XML配置文件、6个JAR包文件、1个Git忽略文件、1个属性文件以及1个SQL脚本文件。此系统旨在用于期末答辩展示,展示了开发者对Java编程和系统设计的深入理解。
java回顾、知识整理、拾遗、面试_java-review
mysql主从复制用struts2,spring,hibernate框架,搭建在线考试系统。网站支持(1)老师创建题库,创建题目,查看题目对题目进行增删改,发布考试(选择考试难中易比例),批改学生试卷,查看学生成绩。(.zip
一个基于Go语言实现的搜索引擎项目资源
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
基于grpc开发的跨语言的交互系统,集成BCS,Brower
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
基于go语言,使用gocv和socket实现摄像头视频传输项
apache-seatunnel-web-1.0.2
内容概要:本篇文章主要介绍了如何在VMware虚拟化平台上搭建并配置QNX Neutrino实时操作系统的步骤方法。文章首先给出了获取必要的安装文件来源,然后逐步指导用户如何完成QNX在虚拟机中的安装过程以及相关网络参数配置,包括选择适当的网络模式来实现宿主机器与QNX虚拟机之间的通信,具体为设置NAT模式或者桥接模式下的网络参数,如指定静态或动态获取IP地址的方法。 适用人群:对嵌入式开发感兴趣的技术人士,尤其是需要在Linux环境下开展工作的程序员和系统工程师。 使用场景及目标:通过详细的操作指南帮助初学者快速掌握在Windows或Linux主机上利用虚拟机搭建QNX Real-Time Operating System开发环境的基础技能,能够实现在该环境中运行简单的C/C++应用程序。 其他说明:本文不仅适用于QNX初学者作为入门引导资料,也为经验丰富的开发者提供了有关于特定环境配置的重要参考。由于涉及到的具体细节比较多,读者最好边操作边对照文章内容进行练习。同时要注意保持最新版本的虚拟化平台客户端和服务端程序以确保兼容性和稳定性。
stm32中dma结合ad的使用
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
低全球变暖潜能值 (GWP) 制冷剂.docx
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
ubuntu