use tcp instead of sock