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收发消息.这方面有大量的框架可用,就不细说了.但如果两个进程是在一台机器上,那么还可以 ...
随机推荐
- java程序设计实验
建立文件调试jdk idea断点调试 项目素数的寻遍
- springcloud系列七 整合slueth,zipkin 分布式链路调用系统:
首先在代码里面引入依赖: <dependency> <groupId>org.springframework.cloud</groupId> <artifac ...
- NowCoder数列(矩阵快速幂变式)
时间限制 3000 ms 内存限制 32768 KB 代码长度限制 100 KB 题目描述 NowCoder最近在研究一个数列: * F(0) = 7 * F(1) = 11 * F(n) = F(n ...
- Flask&&人工智能AI --5 Flask-session、WTForms、数据库连接池、Websocket
未完待续.... DButils 什么是数据库连接池 数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个:释放空闲时间超过最大空闲时间的数据库 ...
- GitLab 遇到的坑
Job for postfix.service failed because the control process exited with error [zbb@storage1 ~]$ sudo ...
- vue(5)联动+tab页
来自:https://juejin.im/post/5a0c191f6fb9a04514639419 1.联动 新增 <input v-model="msg" /> & ...
- Linux7.3 glib-2.49安装记录
由于 Linux系统较新,所在glib选择了较新的glib-2.49,安装过程遇到颇多错误,这里只记录正确的成功的安装记录. # rpm -q ncurses readline lua libffi ...
- Linux安装mysql记录 重置密码
重置密码解决MySQL for Linux错误 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor ...
- Python + Selenium 练习篇 - 获取页面所有邮箱
代码如下: # coding=utf-8import re #python中利用正则,需要导入re模块from selenium import webdriverdriver = webdriv ...
- Caused by: java.net.URISyntaxException: Relative path in absolute URI
<property> <name>hive.exec.scratchdir</name> <value>/tmp/hive</value> ...