Sachverhalt: Sachverhalt: A. Der 1962 geborene H._ erlitt am 3. Februar 1998 einen Arbeitsunfall mit lumbospondylogenem Syndrom beidseits mit ISG-Syndrom. Am 15. Februar 1999 meldete er sich bei der IV-Stelle des Kantons Solothurn zum Leistungsbezug an. Mit Verfügung vom 13. Dezember 2001 sprach ihm die IV-Stelle ab 1. Februar 2001 bei einem Invaliditätsgrad von 46 % eine Viertelsrente zu. Die dagegen erhobene Beschwerde hiess das Versicherungsgericht des Kantons Solothurn in dem Sinne gut, dass es die Verfügung aufhob und die Sache an die IV-Stelle zurückwies, damit diese nach erfolgten Abklärungen im Sinne der Erwägungen über den Leistungsanspruch neu verfüge (Entscheid vom 18. September 2002). Am 24. September 2002 ersuchte der Versicherte die IV-Stelle, ihm für das folgende Verwaltungsverfahren die unentgeltliche Verbeiständung zu gewähren. Mit Verfügung vom 23. Oktober 2002 wies die IV-Stelle dieses Gesuch ab. Am 24. September 2002 ersuchte der Versicherte die IV-Stelle, ihm für das folgende Verwaltungsverfahren die unentgeltliche Verbeiständung zu gewähren. Mit Verfügung vom 23. Oktober 2002 wies die IV-Stelle dieses Gesuch ab. B. Die gegen die Verfügung vom 23. Oktober 2002 am 25. November 2002 erhobene Beschwerde wies das Versicherungsgericht des Kantons Solothurn mit Entscheid vom 24. März 2004 ab. B. Die gegen die Verfügung vom 23. Oktober 2002 am 25. November 2002 erhobene Beschwerde wies das Versicherungsgericht des Kantons Solothurn mit Entscheid vom 24. März 2004 ab. C. Mit Verwaltungsgerichtsbeschwerde beantragt der Versicherte die Aufhebung des kantonalen Entscheides vom 24. März 2004; die IV-Stelle sei anzuweisen, ihm für das Verwaltungsverfahren mit Wirkung ab 24. September 2002 die unentgeltliche Verbeiständung zu bewilligen. Ferner ersucht er um Gewährung der unentgeltlichen Rechtspflege und Verbeiständung für das letztinstanzliche Verfahren. Die IV-Stelle schliesst auf Abweisung der Verwaltungsgerichtsbeschwerde, während das Bundesamt für Sozialversicherung auf eine Vernehmlassung verzichtet.