java之Socket传递图片
客户端:
package client; import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException; public class MyClient { private static final String ADDRESS = "127.0.0.1";
private static final int PORT = 7869; private Socket CreateSocket() {
try {
Socket server = new Socket(ADDRESS, PORT);
return server;
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
} public boolean FileTransfer(String fileName) {
Socket server = this.CreateSocket();
try {
BufferedOutputStream bos = new BufferedOutputStream(
server.getOutputStream());
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(fileName));
byte[] bytes = new byte[1024];
int len = 0;
while ((len = bis.read(bytes)) != -1) {
bos.write(bytes, 0, len);
}
bis.close();
bos.close();
return true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
} /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyClient client = new MyClient();
if (client.FileTransfer("wario.png")) {
System.out.println("Trans file sucessfully!");
}
} }
服务器端:
package server; import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket; public class FileServer implements Runnable { private ServerSocket server = null;
private int port = -1;
private String fileName; public FileServer(int port, String fileName) {
this.port = port;
this.fileName = fileName;
try {
this.server = new ServerSocket(this.port);
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("Please check this port!");
e.printStackTrace();
}
} /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Thread thread=new Thread(new FileServer(7869,"nannan.png"));
thread.start(); }; @Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
Socket client;
client = this.server.accept();
AcceptFile accept=new AcceptFile(client,fileName);
Thread thread=new Thread(accept);
thread.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} } package server; import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.Socket; public class AcceptFile extends Thread { private Socket client;
private String fileName; public AcceptFile(Socket client,String fileName) {
this.client = client;
this.fileName=fileName;
} @Override
public void run() {
// TODO Auto-generated method stub
try {
BufferedInputStream bis=new BufferedInputStream(client.getInputStream());
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(fileName));
System.out.println("Server begin receive file!");
int len=0;
byte[] bytes=new byte[1024];
while((len=bis.read(bytes))!=-1){
bos.write(bytes, 0, len);
}
bos.close();
bis.close();
System.out.println("Accept file sucessfully!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub } }
java之Socket传递图片的更多相关文章
- java下socket传图片
package cn.stat.p4.ipdemo; import java.io.File; import java.io.FileOutputStream; import java.io.IOEx ...
- 利用socket传递图片
package com.company.s3; import java.io.File; import java.io.FileOutputStream; import java.io.InputSt ...
- C#(服务器)与Java(客户端)通过Socket传递对象(序列化 json)
下面详细讲解实现的关键步骤: 通信关键: C#和java用Socket通信,发送数据和接收数据可以统一采用UTF-8编码,经过测试,使用UTF-8编码可以成功传递对象. 对于Sock ...
- java socket - 传递对象
Person类: package com.zhyea.olproxy.socket; import java.io.Serializable; public class Person implemen ...
- java基于socket的网络通信,实现一个服务端多个客户端的群聊,传输文件功能,界面使用Swing
最近在复习java的io流及网络编程.但复习写那些样板程序总是乏味的.便准备写个项目来巩固.想来想去还是聊天项目比较好玩.如果日后完成的比较好自己也可以用(哈哈哈).并且自己后面也要继续巩固java多 ...
- java的值传递笔记
1. 背景:开发小伙伴突然问我java是值传递还是引用传递,我说当然是值传递,只不过有时候传递一个对象时实际传递的是对象的地址值,所以让人容易产生一种引用传递的假象,貌似在李刚的疯狂java讲义有提到 ...
- android开发 socket接收图片并保存
逻辑:接收到socket之后需要将socket发送的图片数据保存下来并通知handler更新界面 关键代码: public void readImage(Socket socket) { try { ...
- 用java的socket来发送一个类
用socket可以简单的发送一些文本信息,太复杂的可能发送不了,比如图片音频可能要用到http来发送和接收了.最基本的使用socket来发送一个字符串,但有的时候我们希望能够发送一个类,这样serve ...
- 使用RandomAccessFile在两个java进程之间传递数据
大部分情况下,我们面对在两个java进程只见传递数据的问题时,第一个想到的就是开server,然后通过socket收发消息.这方面有大量的框架可用,就不细说了.但如果两个进程是在一台机器上,那么还可以 ...
随机推荐
- Qt 学习之路 2(14):对话框数据传递
Home / Qt 学习之路 2 / Qt 学习之路 2(14):对话框数据传递 Qt 学习之路 2(14):对话框数据传递 豆子 2012年9月15日 Qt 学习之路 2 53条评论 对话框 ...
- Kibana6.x.x——启动后的一些警告信息记录以及解决方法
1.发现的第一个警告信息 server log [06:55:25.594] [warning][reporting] Generating a random key for xpack.report ...
- P1415 拆分数列
传送门 DP数列长度过大无法枚举,考虑DP设f1[i]储存以第i个字符为结尾时,的最后一个数最小时,这个数的开头的位置(很难想有木有)OK,状态有了,方程想一想就出来了:设$num[i][j]$为数列 ...
- TP框架中D方法和M方法
D()和M()方法的区别: D和M的区别主要在于 M方法不需要创建模型类文件,M方法不会读取模型类,所以默认情况下自动验证是无效的,但是可以通过动态赋值的方式实现 而D方法必须有创建模型类. 我们可以 ...
- Excel 开发备忘
1.装完读取插件才可以对EXCEL读取 Excel 2010 读取数据插件 https://www.microsoft.com/zh-CN/download/details.aspx?id=13255 ...
- python3 读取表格的数据
python3 读取表格的数据 xlrd1.1.0的下载网址:https://pypi.python.org/pypi/xlrd. xlrd1.1.0兼容python2和python3. python ...
- vue首次赋值不触发watch(deep immediate handler)
deep:默认值是 false,代表是否深度监听.immediate:true代表如果在 wacth 里声明了之后,就会立即先去执行里面的handler方法,如果为 false就跟我们以前的效果一样, ...
- Vue.js-----轻量高效的MVVM框架(七、表单控件绑定)
话不多说,先上完整代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- 在本地安装oracle-maven库
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging= ...
- Hive学习(一)
https://www.cnblogs.com/qingyunzong/p/8707885.html http://www.360doc.com/content/16/1006/23/15257968 ...