- split abstract socket interface into input and output
- add input interface to ftp client