به جای اینکه پیامتون رو تکرار کنید به سوال من جواب بدید. چند بار تکرار کردید در سورس سرور هیچ کدی مبنی به اتصال به آی پی خاص نیست. من چنین سوالی پرسیدم؟
این کلاینت هست که باید به سرور وصل بشه و کلاینت باید آی پی و پورت سرور رو بدونه، نه سرور! پس به جای اون 127.0.0.1 که تو کد کلاینت گذاشتید باید ip سرور باشه!

اما به این سوالم پاسخ ندادید:
شما از عملکرد NAT اطلاع دارید؟
اگر نمیدونید لازمه این رو بدونید تا متوجه حرفای من بشید. پس دربارش بخونید.

بعد که اونا رو خوندید، برای راهنمایی میگم، اگر میخواید دو کامپیوتر خارج از شبکه محلی (یکی در ایران یکی در آمریکا) رو بهم وصل کنید، راحتترین راه اینه یک سرور واقعی (با ip ثابت داشته باشید) و پیام های یک کلاینت رو بگیره و به کلاینت دیگه ارسال کنه. یا هم همون مسائلی که توضیح دادم و تکرارش نمیکنم چون قبلش باید بدونید NAT چی هست و چه مشکلی رو ایجاد میکنه.

فکر میکنم انواع حالات و مشکلات موجود رو گفتم، اگر متوجه نمیشید حتما پایه اش رو نمیدونید یا هم من دارم اشتباه میگم. از این دست پروژه ها هم فراوان کدش وجود داره، کافیه سرچ کنید chat application in java.
اینم یه آموزش ویدیویی 16 دقیقه ای https://www.youtube.com/watch?v=kqBmsLvWU14

در جواب سوال پست اولتون که
بشه سرور رو هر کامپیوتری خارج از شبکه اجرا کنم
باید ip استاتیک از isp خریداری کنید.

موفق باشید.