import java.net.*;
import java.nio.*;
import java.nio.channels.*;
import java.nio.charset.*;public class SocketChannelStruct
{
private SocketChannel socketChannel = null;
private Charset charset = Charset.forName("ISO-8859-1"); 
private CharsetDecoder decoder = charset.newDecoder();
private CharsetEncoder encoder = charset.newEncoder();

SocketChannelStruct(SocketChannel socketChannel)
{
this.socketChannel = socketChannel;
    try 
    {
     socketChannel.open();
socketChannel.configureBlocking(true);
    }
    catch (Exception e) 
    {
    }

    }

public String read()
{
    String returnStr = "";
    try
{
ByteBuffer inBuffer = ByteBuffer.allocateDirect(1024);
socketChannel.read(inBuffer);
inBuffer.flip();
System.out.println(inBuffer);
CharBuffer charBuffer = CharBuffer.allocate(1024);
decoder.decode(inBuffer, charBuffer, false);
charBuffer.flip();
returnStr = String.valueOf(charBuffer);
System.out.println("returnStr is : "+returnStr);
//System.out.println("begin SubPass :" + returnStr);
//AddPassword add = new AddPassword(returnStr);
//returnStr = add.SubPass();
//System.out.println("after SubPass :" + returnStr);
inBuffer.clear();
//charBuffer.clear();
}
catch (Exception e)
{
System.out.println("error in read of ConnectServer.java" + e);
}

return returnStr;
}


public void write(String outStr)
{

try
{


ByteBuffer byteBuffer = ByteBuffer.allocateDirect(1024);
//AddPassword add = new AddPassword(outStr);
//outStr = add.AddPass();
//int limit = byteBuffer.limit();
CharBuffer charBuffer = CharBuffer.wrap(outStr);
byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
encoder.encode(charBuffer, byteBuffer, false);
byteBuffer.flip();
System.out.println(byteBuffer);
socketChannel.write(byteBuffer);
System.out.println("send ok");
byteBuffer.clear();
}
catch (Exception e)
{
System.out.println("error in write of ConnectServer.java" + e);
}

}

public void close()
{
if (socketChannel != null)
{
try
{
socketChannel.close();
}
catch (Exception e)
{
System.out.println("error in close of ConnectServer.java" + e);
}
}
}
}