tcp通讯_一个服务器可以给多个客户端发送图片
来源:互联网 发布:彩票数据分析软件开发 编辑:程序博客网 时间:2024/05/16 11:48
服务端
package com.cn.tcp;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashSet;
/**
* 编写一个服务端可以给多个客户端发送图片。(多线程)
* @author zhiyong
*
*/
/**
* 服务端
* @author zhiyong
*
*/
public class ImageServer extends Thread{
Socket socket = null;
//使用该集合是用于存储ip地址的, 注意共享
static HashSet<String> ips = new HashSet<String>();
public ImageServer(Socket socket) {
this.socket = socket;
}
public void run() {
try {
//获取到socket的输出流对象
OutputStream outputStream = socket.getOutputStream();
//获取图片的输入流对象
FileInputStream fileInputStream = new FileInputStream(new File("f:/cool.png"));
//读取图片数据,把数据写出
byte[] buf = new byte[1024];
int length = 0;
while((length = fileInputStream.read(buf)) != -1){
outputStream.write(buf, 0, length);
}
String ip = socket.getInetAddress().getHostAddress();//socket.getInetAddress()获取对方的ip地址对象
System.out.println("下载的ip是:" + ip);
if(ips.add(ip)){
System.out.println("恭喜" + ip + "用户成功下载!当前下载人数是:" + ips.size());
}
//关闭资源
fileInputStream.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
//建立tcp服务端,并且要监听一个端口
ServerSocket serverSocket = new ServerSocket(9090);
while(true){//不断接收用户的连接
Socket socket = serverSocket.accept();
new ImageServer(socket).start();//启动多线程
}
}
}
客户端
package com.cn.tcp;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* 下载图片的客户端
* @author zhiyong
*
*/
public class ImageClient {
public static void main(String[] args) throws IOException, IOException {
System.out.println(InetAddress.getLocalHost());
//建立tcp服务
Socket socket = new Socket(InetAddress.getByName("192.168.18.111"), 9090);
//获取socket的输入流对象
InputStream inputStream = socket.getInputStream();
//获取文件的输出流对象,为了把获取到的文件写出
FileOutputStream fileOutputStream = new FileOutputStream(new File("f:/jj.png"));
//边读编写
byte[] buf = new byte[1024];
int length = 0;
while((length = inputStream.read(buf)) != -1){
fileOutputStream.write(buf, 0, length);
}
//关闭资源
fileOutputStream.close();
socket.close();
}
}
0 0
- tcp通讯_一个服务器可以给多个客户端发送图片
- 编写一个服务端可以给多个客户端发送图片
- {网络编程}和{多线程}应用:基于TCP协议【实现多个客户端发送文件给一个服务器端】--练习
- 编写Socket客户端和服务器程序,客户端发送一个包含多个数字的字符串给服务器,服务器排序后返回给客户端,要求服务器能连续不断地服务。
- Windows Socket 编程_单个服务器对多个客户端简单通讯
- Windows Socket 编程_单个服务器对多个客户端简单通讯
- Windows Socket 编程_单个服务器对多个客户端简单通讯
- 使用TCP协议实现客户端向服务器发送图片
- Python服务端,通过TCP发送一张图片给Android客户端,客户端把图片显示出来
- TCP传输(二):服务器给客户端一个反馈案例
- java_多线程_socket通信_多个客户端发送,服务器响应
- 网络编程_服务器给客户端一个反馈案例
- 基于select模型的tcp服务器---一个服务器如何与多个客户端进行通信?
- 基于linux poll模型的tcp服务器------一个服务器如何与多个客户端进行通信?
- socket通讯,可以相应多个客户端源码
- TCP服务器接收多个客户端连接
- TCP的多个客户端连接服务器
- TCP实现客户端,服务器通信(客户端发送一个字符串,服务器回馈字符串的反序)
- java项目之简易学生成绩管理系统
- 使用IEDA 创建maven web 项目,并且部署到Tomcat 中
- 推荐!国外程序员整理的机器学习资源大全
- Payment:接入支付宝当面付(扫码支付与条码支付)教程
- 前端开发【CSS字体大小单位】
- tcp通讯_一个服务器可以给多个客户端发送图片
- 尼姆博弈
- 多线程和socket编程的一些问题
- hadoop2提交到Yarn: Mapreduce执行过程分析2
- tcp通讯_模拟Tomcat服务器
- 读书笔记5 《精进:如何成为一个很厉害的人》 采铜
- glut中定时器的使用
- Android逆向笔记之smali代码分析
- test