learning socket