base send and recv