نقل قول نوشته شده توسط manvaputra مشاهده تاپیک
خوب دوستان عزیز امیدوارم که این مقاله بدردتون خورده باشه در ادامه کد یک برنامه چت ساده رو براتون می ذارم که دقیقا با توجه به آموزش بالا نوشتم البته اینم بگم که منظور از این کد نوشتن چت بصورت حرفه ای نبوده فقط می خواستم آموزش بالا در قالب یک مثال ساده پیاده سازی بشه:

کد سرور چت:

  import java.net.*;
import java.io.*;
import java.util.*;
public class tcpserver {

public static void main(String[] args) throws Exception {


ServerSocket mysock = new ServerSocket(1254);مرحله اول

Socket mylink = mysock.accept();مرحله دوم
System.out.println("new client conected");

DataInputStream input = new DataInputStream(mylink.getInputStream());مرحل سوم
DataOutputStream output = new DataOutputStream(mylink.getOutputStream());

String request="";

String sendstring;
Scanner inp = new Scanner(System.in);
while ( !request.equals("QUIT") )
{

request = input.readUTF ();مرحله چهارم

System.out.println(request);


sendstring=inp.next();

output.writeUTF (sendstring);


}

mylink.close(); مرحله پنجم

}
}
توی کد بالا مراحل مرتبط با آموزش رو هم نوشتم که اگه گام به گام پیش برید قطعا می تونید این برنامه چت ساده رو بنویسید.

کد کلاینت چت:


   
import java.net.*;
import java.io.*;
import java.util.*;
public class TCPclient {

public static void main(String[] args) throws Exception {


Socket mysock=new Socket(InetAddress.getLocalHost(),1254);

DataInputStream input = new DataInputStream(mysock.getInputStream());
DataOutputStream output = new DataOutputStream(mysock.getOutputStream());

String request;


String sendstring="";
Scanner inp = new Scanner(System.in);

while ( !sendstring.equals("QUIT"))
{

sendstring=inp.next();
output.writeUTF (sendstring);

request = input.readUTF ();
System.out.println(request);

}

mysock.close();

}
}
نکات:
1- طبیعاتا اول برنامه سرور باید اجرا بشه.
2- کلاینت شروع کننده و خاتمه دهنده چت می باشد.
3-مکالمه باید یک در میان باشه یعنی کلاینت یه چیزی بگه بعد سرور جواب بده مجددا نوبت کلاینت میشه.
4- مکالمه با ارسال QUIT از طرف کلاینت خاتمه پیدا میکنه.

بازم می گم هدف از برنامه بالا نوشتم چت نبوده برای همین اینقدر چت کردن توش شرط و شروط داره به همین علت اگه ضعفی هم داره دوستان به بزرگی خودشون ببخشن ما رو
ولی نکته مهم مربوط میشه به نکته سه یعنی یکی در میان بودن نوع چت به این دلیل که هر یک از دو بخش کلاینت و سرور بعد از ارسال داده منتظر دریافت می مونن یعنی قادر نیستن همزمان هم داده ارسال کنند و هم منتظر دریافت باشن یعنی این برنامه ساده قابلیت همزمانی نداره . دقیقا اینجاست که لزوم THREAD به چشم می خوره ! بزودی آموزش قدم به قدم THREAD نویسی توسط دوست عزیزم محسن آماده میشه و بعد از اون سعی می کنیم به کمک هم کد بالا رو کامل تر کنیم.منتظر اتصال از نوع UDP هم باشید.
با تشکر از دست اندر کاران این سایت که محیطی مناسب برای تبادل اطلاعات برای علاقمندان فراهم نموده اند. همچنین با تشکر از استاد عزیزم Liew Chee Sun که واقعا دری بسوی برنامه نویسی تحت شبکه با جاوا بروی ما گشود.

ممنون از شما به خاطر توضیحاتتون.
میشه در مورد این خط Scanner inp = new Scanner(System.in); توضیح بدید که چیکار میکنه؟
شما در پست اولتون گفتین که با Socket mylink = mySock.accept (); سرور منتظر یک پیغام از کلاینت میشه، خوب برای اینکه کلاینت اطلاعاتی بده نباید از output.write استفاده کنه؟ پس چرا شما در کدتون ابتدا از input.read استفاده کردید؟(در سمت سرور)
می دونم سوالام ی خورده ساده پیش افتادست اما سوال دیگه، پیش میاد