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

برنامج شات ( مشروعي الاول في الجافا )

مغلق
بدأه m_alzantot في 3 فبراير 2007 · 10 رد · 1,813 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

أخوتي في الله أنا مبتدأ في لغه الجافا وقد قمت بكتابه مشروع بسيط عباره عن برنامج شات من خلال اللان بلغه الجافا

وقد قمت بوضعه مع الرساله حتى يستفيد منه الاخوه الاعضاء وأرجو من الاخوه في المنتدي إبداء رايهم في هذا البرنامج كما أرحب بأي مقترحات لتطويره .

lanchat.rar

تم تعديل هذه المشاركة بواسطة nardien28 في 3 فبراير 2007 في 22:53

يا نفس كفي عن العصيان واكتسبي ----- فعلا جميلا لعل الله يرحمني

#2

كود البرنامج

import java.io.*;
import java.net.*;
import java.awt.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
class MyServerFrame extends JFrame{
	private JList statusList;
	private Vector status;
	private ImageIcon img;
	private JTextArea txtMsg;
	private JLabel lblHostName;
	private JTextField txtHostName;
	private JButton btnSend;
	public MyServerFrame(){
		setSize(400,200);
		status=new Vector();
		statusList=new JList(status);
		statusList.setBackground(Color.pink);
		Toolkit kit=Toolkit.getDefaultToolkit();
		JLabel lblImage=new JLabel();
		img=new ImageIcon(kit.getImage(("dash.jpg")));
		lblImage.setIcon(img);
		lblImage.setBackground(Color.green);
		Dimension d=kit.getScreenSize();
		setLocation((int)(d.getWidth()/4),(int)(d.getHeight()/4));
		setSize((int)(d.getWidth()/2),(int)(d.getHeight()/2));
		JPanel pnl1=new JPanel();
		pnl1.setLayout(new GridLayout(1,0));
		pnl1.add(statusList);

		pnl1.add(lblImage);
		lblHostName=new JLabel("Enter host name :");
		txtHostName=new JTextField(20);
		txtMsg=new JTextArea(20,3);
		btnSend=new JButton("Send");
			btnSend.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent event){
				new ClientThread(txtHostName.getText(),txtMsg.getText()).start();
			}

		});
		JPanel tmp=new JPanel();
		tmp.setLayout(new GridLayout(1,0));
		tmp.add(lblHostName);
		tmp.add(txtHostName);
		JPanel pnl2=new JPanel();
		pnl2.setLayout(new GridLayout(3,0));
		pnl2.add(tmp);
		pnl2.add(txtMsg);
		pnl2.add(btnSend);
		getContentPane().setLayout(new GridLayout(2,0));
		getContentPane().add(pnl1);
		getContentPane().add(pnl2);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		new AnimationThread(lblImage).start();
		new ServerThread(statusList,status).start();

	}
public static void main(String [] args){
	new MyServerFrame();
	}
}

class AnimationThread extends Thread{
	private JLabel lbl1;
	public AnimationThread(JLabel lbl){
		lbl1=lbl;
	}
	public void run(){
		boolean isShown=false;
		while(true){
			try{
				lbl1.setVisible(isShown);
				isShown=!isShown;
				Thread.sleep(1000);

			}catch(InterruptedException intEX){
			}
		}
	}

}

class ClientThread extends Thread {
	private String hostName;
	private String msg;
	public ClientThread(String h,String m){
			hostName=h;
			msg=m;
	}
	public void run(){
		Socket client=null;
				InetAddress host=null;
				try{
					host=InetAddress.getByName(hostName);
				}catch(UnknownHostException uhEX){
					JOptionPane.showMessageDialog(null,"Cannot find destination host.","Error ",JOptionPane.ERROR_MESSAGE);
					return;
				}
				try {
					client=new Socket(host,1234);
					PrintWriter pw=new PrintWriter(client.getOutputStream(),true);
					pw.println(msg);
				}catch(IOException ioEX){
					JOptionPane.showMessageDialog(null,ioEX.getMessage(),"Error ",JOptionPane.ERROR_MESSAGE);
					return;	
				}
	}
}
class ServerThread extends Thread{
	private ServerSocket server;
	private JList list;
	private Vector status;
	private final int PORT=1234;
		public ServerThread(JList list,Vector status){
				this.list=list;
				this.status=status;
				try{
					server=new ServerSocket(PORT);
				}catch(IOException ioEX){
					JOptionPane.showMessageDialog(null,"Cannot start server.","Error ",JOptionPane.ERROR_MESSAGE);
					System.exit(1);
				}
				while(true){
				try{
					Socket client=server.accept();
					status.add("Client :"+client.getInetAddress().getHostName().toString()+" accepted ");
					list.setListData(status);
					new Thread(new ClientHandler(list,status,client)).start();
				}catch(IOException ioEX){
				}
				}
		}
}
class ClientHandler extends JFrame implements Runnable{
	private JLabel lbl1;
	private JTextArea txtMsgs;
	private Socket client;
	private Vector status;
	private JList list;
	public ClientHandler( JList list,Vector status,Socket client){
		this.client=client;
		this.status=status;
		this.list=list;
		Toolkit kit=Toolkit.getDefaultToolkit();
		Dimension d=kit.getScreenSize();
		setSize((int)d.getWidth()/3,(int)d.getHeight()/3);
		setLocation((int)(Math.random()*d.getWidth()*0.6),(int)((Math.random()*d.getHeight())*0.6));
		setTitle("Client messages ");
		lbl1=new JLabel("Messages from client : "+client.getInetAddress().getHostName());
		txtMsgs=new JTextArea (20,5);
		getContentPane().setLayout(new GridLayout(2,1));
		getContentPane().add(lbl1);
		getContentPane().add(new JScrollPane(txtMsgs));
		setVisible(true);
		addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent event){
				end();
			}
		});
	}
	private void end(){
				setVisible(false);
				dispose();
				try{

					status.add("Connection with client :"+client.getInetAddress().getHostName()+" closed.");
					list.setListData(status);
					client.close();
				}catch(IOException iox){

				}
	}
	public void run (){
	try{
		Scanner input=new Scanner(client.getInputStream());
		String msg=input.nextLine();
		while(!msg.equals("end")){
			txtMsgs.append(msg+"\n");
			msg=input.nextLine();
		}
		end();

	}catch(IOException ex){
	}catch(Exception ex){
	}
	}
}

تم تعديل هذه المشاركة بواسطة nardien28 في 3 فبراير 2007 في 23:15

يا نفس كفي عن العصيان واكتسبي ----- فعلا جميلا لعل الله يرحمني

#3

برنامج جميل بداية موفقة يا زنتوت ;) ;) .

#4

مشكووووووووووووووووووووووووووووور

#5

بارك الله فيك و جزاك خيرا

لو انفقت من وقتك في شرح البرنامج كمقالة لكان أكثر نفعا بارك الله فيك

#6

السلام عليكم

مشكور أخي m_alzantot

لو سمحت إش هو الhost name إلي بيطلب مني

أدخله .

شو بيلزم يكون عندي حتى أقدر أشغل البرنامج

ممكن تشرح باختصار كيف هدا البرنامج بيشتغل

لأني ما بعرف في برامج الشات

#7

السلام عليكم

أخي JFriend المقصود ب host name انك تكتب اما اسم الجهاز الذي تود الاتصال به أو تكتب رقم ال اي بي المميز له على الشبكه.

و متطلبات عمل البرنامج هي فقط ال Java runtime 1.5

و بخصوص اقتراح الأخ ( علمني حرفا ) فسوف احاول ان شاء الله كتابه دروس لل Java network programming وسوف اقوم بشرح هذا البرنامج كأحد الامثله.

يا نفس كفي عن العصيان واكتسبي ----- فعلا جميلا لعل الله يرحمني

#8

برنامج جامد يا زوزو

;)

#9

السلام عليكم

اقتباس
أخي JFriend المقصود ب host name انك تكتب اما اسم الجهاز الذي تود الاتصال به أو تكتب رقم ال اي بي المميز له على الشبكه

أفهم من هيك إنه الجافا بتتعامل مع IP?

#10

أخي JFriend

هناك طريقتين لتمييز الجهاز على الشبكه

1- باستخدام HostName

2- باستخدام IP

وهما في الواقع طريقه واحده حيث ان ال HostName يتم تحويله الى IP عن طريق ال DNS ;-)

يا نفس كفي عن العصيان واكتسبي ----- فعلا جميلا لعل الله يرحمني

#11

السلام عليكم

ايه الحلاوه دي ياصفصف

ناقشه منين؟ :P

لا بجد جبت الفكره منين

ومستنين منك الشرح اللي وعدتنا بيه

مع تمنياتي لك بالتوفيق

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

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