Using Charset instead of String
Fixed incomplete buffer IOs via Channel.read/write