socket abstraction

windows implementation only