Android/Java “TCP发送文件,第一次发送、接收完成,第二次无法接收 ”问题解决记录

在使用TCP进行文件发送时遇到一个问题:首次发送和接收正常,但第二次发送时出现'Address already in use'异常。问题在于`ServerSocket`在while(true)循环中重复创建,导致端口占用。解决方案是将`ServerSocket`创建移出循环,确保每次只创建一次。此问题反映出对Socket理解不足和忽视日志分析的重要性。
摘要由CSDN通过智能技术生成

问题描述:

使用TCP发送多个文件,每发完一个文件就关闭Socket,断开连接。发送下一个文件时在建立连接。建立连接代码如下:

    @Override
    public void run() {
        Log.i(TAG, "TcpFileReceiver被创建");
        while (true) {
            try {
				serverSocket = new ServerSocket(9999); // 指定播放软件监听端口
                socket = serverSocket.accept();
                if (socket != null) {
                    Log.i(TAG, "Socket连接建立in");
                    bufferedInputStream = new BufferedInputStream(socket.getInputStream());
                    bufferedOutputStream = new BufferedOutputStream(socket.getOutputStream());
                    // 开启线程接收上位机发送的数据包
                    isReceiveFileThreadRun = true;
                    receiveFileThread = new ReceiveFileThread();
                    receiveFileThread.start();
                    Log.i(TAG, "Socket连接建立out");
                } else {
                    Log.i(TAG, &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值