network socket implement