/***1***2***3***4***5***6***7***8***9***A***B***C***D***E***F***G***H***I***J***K***L***M***N****/
def disp_sockinfo(sock){				# ソケットの情報を表示します。(初回時、及び、変更時)
/***1***2***3***4***5***6***7***8***9***A***B***C***D***E***F***G***H***I***J***K***L***M***N****/

static so_info=NULL
static lo_info=NULL
static re_info=NULL

# ソケットの情報取得
	(sv_ip,sv_sip,sv_port,sv_sport,sv_type,cl_ip,cl_sip,cl_port,cl_sport,cl_type) = sockinfo(sock)
	so_temp = sprint("%s[ Socket=%d ]%s",C_GRE,sock,C_DEF)
	lo_temp = sprint("%s[ LO ]%s IP=%s(0x%X) Port=%s(%d) Type=%s",C_RED,C_DEF,sv_sip,sv_ip,sv_sport,sv_port,sv_type)
	re_temp = sprint("%s[ RE ]%s IP=%s(0x%X) Port=%s(%d) Type=%s",C_BLU,C_DEF,cl_sip,cl_ip,cl_sport,cl_port,cl_type)

# 初回時、又は、変更時に表示
	if( !isdef(so_info[sock]) || so_info[sock]!=so_temp ){ so_info[sock] = so_temp; print("%s\n",so_info[sock]); }
	if( !isdef(lo_info[sock]) || lo_info[sock]!=lo_temp ){ lo_info[sock] = lo_temp; print("%s\n",lo_info[sock]); }
	if( !isdef(re_info[sock]) || re_info[sock]!=re_temp ){ re_info[sock] = re_temp; print("%s\n",re_info[sock]); }

}
