11级_Java_曹建波 9.13 Tcp实现上传文件和图片
来源:互联网 发布:女歌手好听的网络歌 编辑:程序博客网 时间:2024/06/03 08:00
tcp协议:
1.面向连接的
2.通过三次握手完成连接
3.可靠地协议
4.相对于udp稍慢
分为服务端:SeverSocket
和客户端:Socket
服务端步骤:
1.建立tcp Socket服务,必须要监听一个端口
ServerSocket ss=new ServerSocket(port);
2.通过accptet方法,返回一个socket对象,同过这个socket与客户端的socket建立连接。
Socket s= ss.accept();
3.通过socket获取输入输出流,进行信息通信
写:s.getOutputStream();
读:s.getInputStream()
4.关闭资源
s.close();
ss.close();
客户端
1.建立Socket客户端,ip代表要连接的目的地址和端口
Socket s=new Socket(ip,port)
2.通过socket获取输入输出流与服务端通信
写:s.getOutputStream();
读:s.getInputStream()
3.关闭资源。
s.close();
上传文本
服务端
package com.csdn.net;
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 UploadServer {
/**
* @param args
* @throws IOException
*/
publicstatic void main(String[] args) throws IOException {
ServerSocketss=new ServerSocket(9009);
Sockets=ss.accept();
Stringip=s.getInetAddress().getHostAddress();
System.out.println(ip+"……connection");
BufferedReaderbrin =new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriterpw=new PrintWriter(newFileWriter("C:/Users/Yule/Desktop/server.txt"),true);
Stringline=null;
while((line=brin.readLine())!=null){
pw.println(line);
}
PrintWriterpwout=new PrintWriter(s.getOutputStream(),true);
pwout.println("上传成功!!");
pw.close();
s.close();
ss.close();
}
}
客户端
package com.csdn.net;
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 UploadClient {
/**
* @param args
* @throws IOException
* @throws UnknownHostException
*/
publicstatic void main(String[] args) throws Exception {
Sockets=new Socket("192.168.49.186",9009);
BufferedReaderbr=new BufferedReader(newFileReader("C:/Users/Yule/Desktop/server.txt"));
PrintWriterpwout=new PrintWriter(s.getOutputStream(),true);
Stringline =null;
while((line=br.readLine())!=null){
pwout.println(line);
}
s.shutdownOutput();
BufferedReaderbrin=new BufferedReader(new InputStreamReader(s.getInputStream()));
Stringstr=brin.readLine();
System.out.println(str);
br.close();
s.close();
}
}
上传图片
服务端
package com.csdn.net;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class ImgServer {
/**
* @param args
*/
publicstatic void main(String[] args) throws IOException {
ServerSocketss=new ServerSocket(9009);
while(true){
Sockets=ss.accept();
newThread(new ImgThread(s)).start();
}
//ss.close();
}
}
class ImgThread implements Runnable{
privateSocket s;
publicImgThread(Socket s){
this.s=s;
}
@Override
publicvoid run() {
intcount=1;
try{
Stringip=s.getInetAddress().getHostAddress();
System.out.println(ip+"……connection");
InputStreamin=s.getInputStream();
Filedir=new File("C:/Users/Yule/Desktop");
Filef=new File(dir,ip+"("+count+").jpg");
while(f.exists()){
f=newFile(dir,ip+"("+(count++)+").jpg");
}
FileOutputStreamfos=new FileOutputStream(f);
byte[]buf=new byte[1024];
intlen=0;
while((len=in.read(buf))!=-1){
fos.write(buf,0,len);
}
OutputStreamout=s.getOutputStream();
out.write("上传成功了".getBytes());
fos.close();
s.close();
}catch(Exceptione){
e.printStackTrace();
}
}
}
客户端
package com.csdn.net;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
public class ImgClient {
/**
* @param args
*/
publicstatic void main(String[] args) throws Exception {
// if(args.length==0){
// System.out.println("请指定一个jpg文件");
// return;
// }
// Filef=new File(args[0]);
Sockets=new Socket("192.168.49.205",9009);
FileInputStreamfis=new FileInputStream("F:\\Picture\\壁纸\\图片\\1(1).jpg");
OutputStreamout=s.getOutputStream();
byte[]buf=new byte[1024];
int len=0;
while((len=fis.read(buf))!=-1){
out.write(buf,0, len);
}
s.shutdownOutput();
InputStreamin=s.getInputStream();
byte[]b=new byte[1024];
intnum=in.read(b);
System.out.println(newString(b,0,num));
fis.close();
s.close();
}
}
- 11级_Java_曹建波 9.13 Tcp实现上传文件和图片
- 11级_Java_曹建波 11.29 文件上传
- Tcp实现上传文件和图片
- 11级_Java_曹建波 03.02 Struts2_事物管理&文件上传
- 11级_Java_曹建波 11.30 文件下载
- 11级_Java_曹建波 9.12 Tcp协议编程
- TCP实现图片上传
- 11级_Java_曹建波5.10 Java流与文件操作
- 11级_Java_曹建波5.15 Java流与文件操作
- 11级_Java_曹建波3.28 运算符和表达式
- 11级_Java_曹建波5.22 数据库和表
- 11级_Java_曹建波5.28 数据库的查询和视图
- 实现图片上传预览和取消文件上传功能
- TCP、UDP练习题 (UDP聊天程序、TCP上传文本文件和图片文件)
- 利用TCP协议 上传图片、文件
- 网络编程(TCP上传图片文件)
- 11级_Java_曹建波 9.07 JDBC编程将文本图片存入数据库并取出
- 在Java中实现TCP协议编程续之实现文本和图片的上传代码
- linux shell数组使用
- 9-13
- JAVA----第三周 任务二
- 在Java中实现TCP协议编程续之实现文本和图片的上传代码
- jsp+mysql中文乱码问题的解决
- 11级_Java_曹建波 9.13 Tcp实现上传文件和图片
- 爱 不说再见
- ARM cortex A8/9 - Android NDK - NEON介绍以及优化
- servlet response细节
- Java网络编程入门
- 常用小函数
- strlen与sizeof
- 相识9·11
- 关闭sendmail服务