JAVA 简单实现TCP demo (2)

本文介绍如何使用JAVA实现TCP协议进行文件传输。通过展示服务器端和客户端的代码示例,详细阐述了如何在相同的端口号下进行图片传输操作,并强调了文件路径正确性对避免运行时错误的重要性。
摘要由CSDN通过智能技术生成

之前我们写过一个简单的实现,这次再来写一个可以传文件的

先来服务器端的:

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TCPserverdemo02 {
    public static void main(String[] args) throws Exception{
        //1 创建服务
        ServerSocket serverSocket = new ServerSocket(9000);
        //2 监听客户端的连接
        Socket socket = serverSocket.accept();//阻塞式监听,会一直等待客户端连接
        //3 获取输入流
        InputStream is = socket.getInputStream();
        //4 文件输出
        FileOutputStream fos = new FileOutputStream(new File("receive.jpg"));
        byte[] buffer = new byte[1024];
        int len;
        while ((len=is.read(buffer)) != -1){
            fos.write(buffer, 0 ,len);
        }

        // 通知客户端接收完毕
        OutputStream os = socket.getOutputStream();
        os.write("接收完毕,你可以断开了"
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当然,以下是一个使用Java实现简单的MQTT发布和订阅的示例代码: ```java import org.eclipse.paho.client.mqttv3.*; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; public class MqttDemo { public static void main(String[] args) { String broker = "tcp://mqtt.example.com:1883"; // MQTT服务器地址 String clientId = "JavaClient"; // 客户端ID String topic = "test/topic"; // 主题 try { MqttClient client = new MqttClient(broker, clientId, new MemoryPersistence()); MqttConnectOptions connOpts = new MqttConnectOptions(); connOpts.setCleanSession(true); System.out.println("Connecting to broker: " + broker); client.connect(connOpts); System.out.println("Connected"); // 发布消息 String content = "Hello, MQTT!"; int qos = 0; System.out.println("Publishing message: " + content); MqttMessage message = new MqttMessage(content.getBytes()); message.setQos(qos); client.publish(topic, message); // 订阅消息 System.out.println("Subscribing to topic: " + topic); client.subscribe(topic, new MqttCallback() { public void connectionLost(Throwable cause) { System.out.println("Connection lost!"); } public void messageArrived(String topic, MqttMessage message) throws Exception { System.out.println("Message received: " + new String(message.getPayload())); } public void deliveryComplete(IMqttDeliveryToken token) { System.out.println("Delivery complete!"); } }); // 挂起程序,等待消息到达 Thread.sleep(5000); // 断开连接 client.disconnect(); System.out.println("Disconnected"); } catch (MqttException | InterruptedException e) { e.printStackTrace(); } } } ``` 请确保在运行代码之前将MQTT服务器地址、客户端ID和主题替换为正确的值。这个示例中,客户端首先连接到MQTT服务器,然后发布一条消息到指定主题,同时订阅该主题以接收消息。在接收到消息后,程序将打印出消息内容。最后,程序挂起一段时间以等待消息到达,然后断开连接。 这只是一个简单的示例,您可以根据自己的需求进行修改和扩展。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值