2

宣言された変数

protected Socket fileSocket;
protected OutputStream os;
fileSocket = new Socket(host, port + 1);
os = fileSocket.getOutputStream();

そして次のコードで使用します

File file;
FileInputStream fis;            
int readBytes;
try
{
    if(fileSocket.isOutputShutdown())
    {
        fileSocket.setKeepAlive(true);//this line
    }
    sendToServer(message);              
    bufFileName = message.toCharArray();
    fileName = new String(bufFileName, 6, bufFileName.length - 6);              
    file = new File(fileName);
    fis = new FileInputStream(file);
    while ((readBytes = fis.read()) != -1)
    {
        os.write(readBytes);
        os.flush();
    }
    fileSocket.shutdownOutput();
    fis.close();
    clientUI.display("Trans complete");

ファイルを送信し、fileSocket をシャットダウンします。
また、ファイルソケットを再利用したいのですが、適切な方法が見つかりません。どのような方法や操作をすればよいですか?

4

2 に答える 2

2

新しいソケットをインスタンス化するだけです。すでに閉じているソケットは使用できません。既に閉じているファイル ストリームに対してファイル操作を実行しようとする場合です。

于 2012-11-11T14:22:01.177 に答える
0

setKeepAlive()はあなたが思っていることをしません。ソケットの出力をシャットダウンすると、そのソケットでそれ以上出力を行うことはできなくなります。一度閉じたら、再利用することはできません。

于 2012-11-12T06:37:22.627 に答える