nio服务器图片显示,NIO服务器/客户端发送图像问题

该博客探讨了一位开发者在实现NIO(非阻塞I/O)服务器和客户端程序时遇到的问题,服务器只能发送14个字节的数据后停止发送。服务器代码中存在一个潜在的无限循环,可能造成客户端无法接收完整数据。客户端则尝试从服务器接收数据并写入文件。问题可能涉及缓冲区管理、数据读写和连接关闭等方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

嗨,我一直在努力制作NIO服务器/客户端程序。 我的问题是,服务器只发送14个字节,那么它不会再发送任何东西。我坐在这,我真的什么都看不到了,并为此这么久决定,看是否有人在这里可以看到问题NIO服务器/客户端发送图像问题

服务器代码:

import java.nio.*;

import java.nio.channels.*;

import java.nio.charset.*;

public class Testserver {

public static void main(String[] args) throws java.io.IOException {

ServerSocketChannel server = ServerSocketChannel.open();

server.socket().bind(new java.net.InetSocketAddress(8888));

for(;;) {

// Wait for a client to connect

SocketChannel client = server.accept();

String file = ("C:\\ftp\\pic.png");

ByteBuffer buf = ByteBuffer.allocate(1024);

while(client.read(buf) != -1){

buf.clear();

buf.put(file.getBytes());

buf.flip();

client.write(buf);

// Disconnect from the client

}

client.close();

}

}

}

客户:

import java.io.IOException;

import java.net.InetSocketAddress;

import java.nio.ByteBuffer;

import java.nio.channels.Channels;

import java.nio.channels.ReadableByteChannel;

import java.nio.channels.SocketChannel;

import java.nio.channels.WritableByteChannel;

import java.io.*;

import java.net.*;

import java.nio.*;

import java.nio.channels.*;

import java.nio.charset.*;

public class Testclient {

public static void main(String[] args) throws IOException {

SocketChannel socket = SocketChannel.open(new InetSocketAddress(8888));

FileOutputStream out = new FileOutputStream("C:\\taemot\\picNIO.png");

FileChannel file = out.getChannel();

ByteBuffer buffer = ByteBuffer.allocateDirect(8192);

while(socket.read(buffer) != -1) {

buffer.flip();

file.write(buffer);

buffer.compact();

buffer.clear();

}

socket.close();

file.close();

out.close();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值