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收发消息.这方面有大量的框架可用,就不细说了.但如果两个进程是在一台机器上,那么还可以 ...
随机推荐
- input只能输入非负数
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- linux学习3(vim)
一.文档编辑 1. vi和vim命令 Vim的打开文件的方式(4种,要求掌握的就前三种): 1. vim 文件路径 ...
- php composer php amqplib
下载composer.phar放到项目根目录 d:/www/apps https://getcomposer.org/download/1.4.1/composer.phar 下载安装Composer ...
- 搭建 Django 平台
1.使用Pycharm.创建一个Django项目 2.图示 3.在终端输入: 4.结果
- 4.AOP
1.代理模式 代理模式(Proxy Pattern)是GoF23种常用设计模式之一使用代理模式创建代理对象,让代理对象控制目标对象的访问,并且可以在不改变目标对象的情况下添加一些额外的功能包括静态代理 ...
- idea生成springBoot 报错403
问题: idea创建springboot失败 Initialization failed Cannot download 'https://start.spring.io': Status: 403 ...
- 基于wireshark抓包分析TCP的三次握手
1. TCP的三次握手 在TCP/IP协议通讯过程中,采用三次握手建立连接,从而保证连接的安全可靠. 所有基于TCP的通信都需要以两台主机的握手开始.这个握手过程主要是希望能达到以下不同的目的.[1] ...
- JedisCluster 链接redis集群
先贴代码: <!-- redis客户端 --><dependency> <groupId>redis.clients</groupId> <a ...
- c++ primer 中讲的顶层const 和 底层 const 理解
c++ primer 中讲的 顶层const 和 底层 const 以前没搞懂的顶层const和底层const,这次看了后感觉明白了. 首先,const是一个限定符,被它修饰的变量的值不能改 ...
- Zookeeper如何正确设置和获取watcher
Watcher 设置是开发中最常见的,需要搞清楚watcher的一些基本特征,对于exists.getdata.getchild对于节点的不同操作会收到不同的 watcher信息 state=-1 ...