الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

TCP client & TCP Server implemntations

مغلق
بدأه IT Soft في 20 أبريل 2006 · 8 رد · 1,698 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

هنا كود بروتكول TCP للــ Client على لغة الجافا ,

import java.net.*;
import java.io.*;
import javax.swing.*;

public class TCPClient {
	public static void main( String args[] )
	{
  Socket s = null;
  String st = "";	
  int i = 0;	
  
  while ( i != 5 ) {
  
 	 try {
    int serverPort = 7896;
    s = new Socket( "192.168.1.3", serverPort );
    DataInputStream in = new DataInputStream( s.getInputStream() );
    DataOutputStream out = new DataOutputStream( s.getOutputStream() );
    
       st = JOptionPane.showInputDialog( "Enter your data : " );
    out.writeUTF( st );
    String data = in.readUTF();
    System.out.println( "Received: " + data );
    JOptionPane.showMessageDialog( null, data, "Received Message ", JOptionPane.INFORMATION_MESSAGE );
 	 }
  
    catch ( UnknownHostException e ) {
    System.out.println( "Sock: " + e.getMessage() );
 	 } catch ( EOFException e ) {
    System.out.println( "EOF: " + e.getMessage() );
 	 } catch ( IOException e ) {
    System.out.println( "IO: " + e.getMessage() );
 	 } finally {
    if ( s != null )
   	 try {
      s.close();
   	 }
   	 catch ( IOException e ) {
      System.out.println( "Close: " + e.getMessage() );
   	 }
 	 }
 	 
 	 i++;
  }	

	}
}

وهنا لــ Server ,

import java.net.*;
import java.io.*;

public class TCPServer {
	public static void main( String args[] )
	{
  try {
 	 int serverPort = 7896;
 	 ServerSocket listenSocket = new ServerSocket( serverPort );
 	 while( true ) {
    Socket clientSocket = listenSocket.accept();
    Connection c = new Connection( clientSocket );
 	 }
  }
  
  catch ( IOException e ) {
 	 System.out.println( "Listen : " + e.getMessage() );
  }
	}
}

وهذا كود تحقيق الاتصال للسيرفر والكلينت .

import java.net.*;
import java.io.*;


class Connection extends Thread {
	DataInputStream in;
	DataOutputStream out;
	Socket clientSocket;

	public Connection ( Socket aClientSocket ) {
  try {
 	 clientSocket = aClientSocket;
 	 in = new DataInputStream( clientSocket.getInputStream() );
 	 out = new DataOutputStream( clientSocket.getOutputStream() );
 	 this.start();
  }
  
  catch ( IOException e ) {
 	 System.out.println( "connection: " + e.getMessage() );
  }
	}
  
  public void run() {
 	 try {
    String data = in.readUTF();
    out.writeUTF( data );
 	 }
 	 
 	 catch ( EOFException e ) {
    System.out.println( "EOF: " + e.getMessage() );
 	 }
 	 
 	 catch ( IOException e ) {
    System.out.println( "IO: " + e.getMessage() );
 	 }
 	 
 	 finally {
    try {
   	 clientSocket.close();
    }
    
    catch ( IOException e ) {
   	 System.out.println( "Close : " + e.getMessage() );
    }
 	 }
  }
}

توضيح الفكرة \

هنا يقول الكلينت بارسال رسالة الى السيرفر , اي مثل عملية chating بين السيرفر والكلينت .

ما احب ان اسأل عنه , كيف يمكنني ان ارسل الى 8 اجهزة وليس جهاز واحد .

حقيقة وجدت صعوبة بالحصول على الفكرة .

الرجاء افادتي بالموضوع .

وشكرا الكم .

#2

اولا لا ادري اذا كان هذا المكان المناسب لهذه المشاركة فلأفضل نقل الموضوع إلى منتدى الـ Java

في حالتك هذه فأنت تستخدم الـ TCP ومن المعروف ان هذا البروتوكول لا يدعم عملية الإرسال كـ Multicast أو Broadcast , وفي هذه الحالة لديك حلين يمكنك الإختيار بينهما:

الأول \ الإبقاء على ال TCP وعمل Address Array تخزن فيها عناوين الأجهزة التي تريد الإرسال لها وتمر عليها بجملة While Loop أو غيرها حيث يجب ان يعرف الـ TCP عنوان الجهاز الذي يريد الإرسال له قبل عملية الإرسال ومن هنا يمكنك إرسال عناوين الـ Clients إلى الـ Server عند عملية الربط ثم تخزينه في Address Array.

الثاني\ التحويل إلى الـ UDP واستخدام الـ IP Multicast حيث يشترك مثلا كل مجموعة من الأجهزة ب Multicast Group ...

#3

ينقل الى منتدى الجافا .. مع بقاء رابط له هنا :)

[islamonline] جديد طريق الإسلام[/islamonline]

#4

شكرا لكم اخواني ..

تقريبا توصلت للفكرة , وهنا يجب ان استخدم بروتوكل tcp ولكن توصلت لفكرة انه من الممكن

جهاز يرسل للاخر وهذا يرسل لجهاز اخر وهكذا ..

متل الية عمل Ring Toplogy

لكن لحتى الان لم استطع تنفيذها

فمن لديه فكرة معينة او يستطيع مساعدتي , ان لا يبخل بذلك

ولكم خالص التحية

شكرا

#5

الحل الامثل هو الذي طرحه الاخ fmo_82

اقتباس
عمل Address Array تخزن فيها عناوين الأجهزة التي تريد الإرسال لها وتمر عليها بجملة While Loop أو غيرها حيث يجب ان يعرف الـ TCP عنوان الجهاز الذي يريد الإرسال له قبل عملية الإرسال ومن هنا يمكنك إرسال عناوين الـ Clients إلى الـ Server عند عملية الربط ثم تخزينه في Address Array

منقطع من حين لاخر

#6

السلام عليكم

اريد برنامج بالجافا يقوم بارسال رساله الى بريد الكتروني (ملاحظه هذا جزء من مشروع التخرجبتاعي ارجوووووووووووا المساعده

وجزاكم الله خير)

#7

شكراً لك

لكن ممكن احد يقولي الطريقة اللي نشغل بها الكود

لاني جربت اضيفها عن طريق ملف > مشروع > بيسك ابليت

ولما سويت كومبايل واكسكيوت ما تشتغل الابليت

ممكن شرح بالخطوات

ويعطيكم العافية

#8

هذا مو ابليت ، هذا تطبيق ، اضف ملفين جافا للمشروع ، واحد سيرفر والآخر كلاينت

شغل السيرفر بعدها شغل الكلاينت .

#9

السلام عليكم ورحمة الله وبركاته

الموضوع موجود فى المنتدى وبصيغة ارسال object

/index.php?showtopic=121974

اتمنى التوفيق

هذا الموضوع مغلق.

مواضيع مشابهة