UDP实现多线程文件接收服务器

6人阅读 评论(0) 收藏 举报
分类:
package udp;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/**
 * @author aachen0
 * @date 2018/4/16 20:49
 * IDE:IntelliJ IDEA
 * UDP数据包传输实现文件上传
 */
public class Receiver implements Runnable{
    public static void main(String[] args) {
        new Thread(new Receiver()).start();
    }
    public static void accept() throws IOException {
        byte[] buff = new byte[1024];
        int length = 0;
        DatagramSocket datagramSocket = new DatagramSocket(9999);
        DatagramPacket datagramPacket = new DatagramPacket(buff,buff.length);
        while (true) {
            datagramSocket.receive(datagramPacket);
            String fileSave = new String(buff, 0, datagramPacket.getLength());
            FileOutputStream fileOutputStream = new FileOutputStream(new File("service\\" + fileSave));
            datagramSocket.receive(datagramPacket);
            long fileSize = Long.parseLong(new String(buff, 0, datagramPacket.getLength()));
            while (fileSize > 0) {
                datagramSocket.receive(datagramPacket);
                length = datagramPacket.getLength();
                fileOutputStream.write(buff, 0, length);
                fileSize -= length;
            }
            datagramSocket.receive(datagramPacket);
            System.out.println(new String(buff, 0, datagramPacket.getLength()));
        }
    }
    
    @Override
    public void run() {
        try {
                accept();
        } catch (IOException e) {
            e.printStackTrace();
        }
    
    }
}
/**
 * @author aachen0
 * @date 2018/4/16 21:01
 * IDE:IntelliJ IDEA
 */
class Upload {
    public static void main(String[] args) throws IOException {
        DatagramSocket datagramSocket = new DatagramSocket();
        File fileUpload = new File("recieve.png");
        FileInputStream fileInputStream = new FileInputStream(fileUpload);
        byte[] buff = new byte[1024];
        int length = 0;
        DatagramPacket datagramPacket = new DatagramPacket(buff, 0, length, InetAddress.getByName("127.0.0.1"), 9999);
        send(fileUpload.getName().getBytes(), datagramPacket, datagramSocket);// 上传文件前先传输文件名
        send((fileUpload.length() + "").getBytes(),datagramPacket , datagramSocket);// 文件长度
        while (-1 != (length = fileInputStream.read(buff))) {
            send(buff,datagramPacket,datagramSocket);
        }
        send("上传完毕!".getBytes(), datagramPacket, datagramSocket);
        
    }
    
    public static void send(byte[] info, DatagramPacket datagramPacket, DatagramSocket datagramSocket) throws IOException {
        datagramPacket.setData(info);
        datagramSocket.send(datagramPacket);
    }
}
查看评论

linux下搭建能同时接收UDP和TCP连接的socket并发多线程服务器

同时接收UDP和TCP连接的socket并发多线程服务器
  • xlb7679
  • xlb7679
  • 2016-06-15 14:29:09
  • 1590

Qt编写的多线程局域网通信软件(含文件传输)

  • 2018年01月23日 15:27
  • 41.55MB
  • 下载

JAVA中基于UDP实现多线程通信

服务器端程序,利用DatagramSocket负责监听端口,当客户端发过来消息时,服务器端就会响应,并将消息内容保存到Datagrampacket对象中,并且!每一次while循环必须重新创建Data...
  • D_inosaur
  • D_inosaur
  • 2017-03-17 15:06:38
  • 2221

udp 多线程客户端和单线程服务器端

具体功能: 客户端读取本地的文件,将内容发给服务器,服务器打印接收到的信息并返回当前服务器的时间,客户端接收到服务器发的消息,打印 客户端: #include #include #in...
  • no_mame
  • no_mame
  • 2013-12-20 10:53:30
  • 3736

Qt创建多线程接收惯导UDP数据

项目需求,要用Qt接收惯导数据,数据采用UDP传输,在Qt中提供了QUdpSocket类来进行UDP数据报(datagrams)的发送和接收。这里我们还要了解一个名词Socket,也就是常说的“套接字...
  • zong596568821xp
  • zong596568821xp
  • 2018-01-04 16:31:09
  • 463

linux高性能服务器编程之同时处理UDP请求和TCP请求的服务器

源代码如下:#include #include #include #include #include #include #include #include #include #in...
  • haolipengzhanshen
  • haolipengzhanshen
  • 2016-12-20 11:45:19
  • 374

【网络】实现简单的TCP、UDP服务器、TCP多进程/多线程服务器

1.0 一个简单的TCP服务器(只服务一个客户端)先看代码如下: server.c#include #include #include#include #include #include #incl...
  • qinghe0808
  • qinghe0808
  • 2017-07-06 19:25:28
  • 597

UDP利用多线程实现数据的发送和接收

package broadview; import java.io.*; import java.net.*; public class QQ_UDP { /** *...
  • lily0806
  • lily0806
  • 2015-08-11 14:41:46
  • 3433

UDP接收和发送线程 实际应用案例

#include #include #include #include #include /*for errno*/ #include #include /*for open close...
  • zxh821112
  • zxh821112
  • 2016-11-25 16:00:18
  • 1296

UDP传输:(四)通过多线程改进,在一个窗口中同时接收又发送

UDP传输:(四)通过多线程改进,在一个窗口中同时接收又发送
  • wangyanming123
  • wangyanming123
  • 2016-05-08 19:20:08
  • 779
    个人资料
    持之以恒
    等级:
    访问量: 236
    积分: 203
    排名: 36万+
    文章分类
    文章存档
    最新评论