طلب مساعدة ببرنامج محادثة بين سيرفر وزبون عن طريق شاشة
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: نقاش و أستفسارات الاعضاء
صفحة 1 من اصل 1 • شاطر
طلب مساعدة ببرنامج محادثة بين سيرفر وزبون عن طريق شاشة
السلام عليكم
أرجوا المساعدة ببرنامج محادثة بين سيرفر وزبون عن طريق شاشة
المشكلة انه بالبرامج العادية عند تنفيذ البرنامجين يصل كل برنامج الى جملة try .. catch
التان فيهما تعريف لل socket
علما ان الاتصال عن طريق ال TCP
ولكن وجود الشاشتين ووجود زر للاتصال جعل البرنامج لا يعمل ويؤدي الى تعليق الزر عن العمل
برنامج السيرفر : وهو موجود ببكيج يختلف عن الزبون :
- الكود:
package server_sock;
import java.awt.Color;
import java.awt.Font;
import java.awt.*;
import java.awt.event.*;
import java.net.* ;
import java.io.* ;
import javax.swing.* ;
public class Server_Sock extends JFrame
{
private static final long serialVersionUID = 1L;
JLabel jlP ;
JLabel jlS ;
JLabel jlM ;
JTextField jtP ;
JTextField jtS ;
JTextField jtM ;
JTextArea TA_Messages ;
JScrollPane jsp ;
JButton jbCo ;
JButton jbSe ;
String HNa ;
int PNu ;
String rec ;
ServerSocket ss ;
Socket s ;
ObjectOutputStream oos ;
ObjectInputStream ois ;
public Server_Sock()
{
jlP = new JLabel("Port Number : " , JLabel.CENTER);
jlP.setForeground(Color.red);
jlP.setFont(new Font("TimesRoman" , Font.BOLD , 20) );
jtP = new JTextField(20);
jtP.setForeground(Color.red);
jtP.setFont(new Font("TimesRoman" , Font.BOLD , 20) );
jtP.setHorizontalAlignment(JTextField.CENTER);
jlS = new JLabel("The State : " , JLabel.CENTER);
jlS.setForeground(Color.CYAN);
jlS.setFont(new Font("TimesRoman" , Font.BOLD , 20) );
jtS = new JTextField(20);
jtS.setEnabled(false);
jtS.setForeground(Color.CYAN);
jtS.setFont(new Font("TimesRoman" , Font.BOLD , 20) );
jtS.setHorizontalAlignment(JTextField.CENTER);
jbCo = new JButton("CONNECTION");
jbCo.setBackground(Color.green);
jbCo.setForeground(Color.BLACK);
jbCo.setFont(new Font("TimesRoman" , Font.BOLD , 20) );
jbSe = new JButton("Send");
jbSe.setBackground(Color.BLUE);
jbSe.setForeground(Color.BLACK);
jbSe.setFont(new Font("TimesRoman" , Font.BOLD , 20) );
jlM = new JLabel("Message to Client :" , JLabel.CENTER);
jlM.setForeground(Color.MAGENTA);
jlM.setFont(new Font("TimesRoman" , Font.BOLD , 20) );
jtM = new JTextField();
jtM.setForeground(Color.MAGENTA);
jtM.setFont(new Font("TimesRoman" , Font.BOLD , 15) );
jtM.setHorizontalAlignment(JTextField.CENTER);
TA_Messages = new JTextArea();
jsp = new JScrollPane();
jsp.setViewportView(TA_Messages);
jsp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS) ;
jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS) ;
JPanel p1 = new JPanel() ;
p1.setLayout(new GridLayout(3,2,10,10));
p1.add(jlP);
p1.add(jtP);
p1.add(jlM);
p1.add(jtM);
p1.add(jlS);
p1.add(jtS);
JPanel p2 = new JPanel() ;
p2.setLayout(new GridLayout(2,1,10,10));
p2.add(p1);
p2.add(jsp);
JPanel p3 = new JPanel() ;
p3.setLayout(new BorderLayout(10,10));
p3.add(p2 , BorderLayout.CENTER);
p3.add(jbCo , BorderLayout.NORTH);
p3.add(jbSe , BorderLayout.SOUTH);
add(p3);
int confirmed = JOptionPane.showConfirmDialog(null ,
"Are you sure you want to run the Server ? " , "Confirm Run Server" ,
JOptionPane.YES_NO_OPTION);
if (confirmed == JOptionPane.YES_OPTION)
{
Connect() ;
}
if (confirmed == JOptionPane.NO_OPTION)
{
return ;
}
jbSe.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent ae)
{
try
{
rec = (String)ois.readObject();
jtS.setText("Can recieve from Client ");
TA_Messages.append( rec ) ;
}
catch(IOException e)
{ jtS.setText("Can not recieve from Client : IOE"); }
catch (ClassNotFoundException ex)
{ jtS.setText("Can not recieve from Client : CNFE "); }
try
{
rec = jtM.getText().trim() ;
oos.writeObject(rec) ;
jtS.setText("Can Send to Client ");
}
catch(IOException e)
{ jtS.setText("Can not Send to Client : IOE"); }
}
}
);
}// end constructor
public void Connect()
{
jbCo.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent ae)
{
try
{
PNu = Integer.parseInt(jtP.getText().trim()) ;
ss = new ServerSocket(PNu) ;
s = ss.accept() ;
jtS.setText("Connection with Client : E");
ois = new ObjectInputStream(s.getInputStream()) ;
oos = new ObjectOutputStream(s.getOutputStream()) ;
}
catch(Exception e)
{ jtS.setText("NOT Connection with Client : E"); }
}
}
);
}
}
// end Server_Sock Class
ويتم استدعائها من خلال كلاس رئيسية :
- الكود:
package server_sock;
import javax.swing.JFrame;
public class Main extends JFrame
{
public static void main(String[] args)
{
Server_Sock cs = new Server_Sock();
cs.setSize(500 , 600);
cs.setTitle("Server");
cs.setVisible(true);
cs.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cs.setLocation(900 , 0);
}
}
// end Main Class
,..............................................................
كلاس ال client :
- الكود:
package client_sock;
import java.awt.*;
import java.awt.event.*;
import java.net.* ;
import java.io.* ;
import javax.swing.* ;
public class Client_Sock extends JFrame
{
private static final long serialVersionUID = 1L;
JLabel jlP ;
JLabel jlS ;
JLabel jlM ;
JTextField jtP ;
JTextField jtS ;
JTextField jtM ;
JTextArea TA_Messages ;
JScrollPane jsp ;
JButton jbCo ;
JButton jbSe ;
String HNa ;
int PNu ;
String rec ;
Socket s ;
ObjectOutputStream oos ;
ObjectInputStream ois ;
public Client_Sock()
{
jlP = new JLabel("Port Number : " , JLabel.CENTER);
jlP.setForeground(Color.red);
jlP.setFont(new Font("TimesRoman" , Font.BOLD , 20) );
jtP = new JTextField(20);
jtP.setForeground(Color.red);
jtP.setFont(new Font("TimesRoman" , Font.BOLD , 20) );
jtP.setHorizontalAlignment(JTextField.CENTER);
jlS = new JLabel("The State : " , JLabel.CENTER);
jlS.setForeground(Color.CYAN);
jlS.setFont(new Font("TimesRoman" , Font.BOLD , 20) );
jtS = new JTextField(20);
jtS.setEnabled(false);
jtS.setForeground(Color.CYAN);
jtS.setFont(new Font("TimesRoman" , Font.BOLD , 20) );
jtS.setHorizontalAlignment(JTextField.CENTER);
jbCo = new JButton("CONNECTION");
jbCo.setBackground(Color.green);
jbCo.setForeground(Color.BLACK);
jbCo.setFont(new Font("TimesRoman" , Font.BOLD , 20) );
jbSe = new JButton("Send");
jbSe.setBackground(Color.BLUE);
jbSe.setForeground(Color.BLACK);
jbSe.setFont(new Font("TimesRoman" , Font.BOLD , 20) );
jlM = new JLabel("Message to Client :" , JLabel.CENTER);
jlM.setForeground(Color.MAGENTA);
jlM.setFont(new Font("TimesRoman" , Font.BOLD , 20) );
jtM = new JTextField();
jtM.setForeground(Color.MAGENTA);
jtM.setFont(new Font("TimesRoman" , Font.BOLD , 15) );
jtM.setHorizontalAlignment(JTextField.CENTER);
TA_Messages = new JTextArea();
jsp = new JScrollPane();
jsp.setViewportView(TA_Messages);
jsp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS) ;
jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS) ;
JPanel p1 = new JPanel() ;
p1.setLayout(new GridLayout(3,2,10,10));
p1.add(jlP);
p1.add(jtP);
p1.add(jlM);
p1.add(jtM);
p1.add(jlS);
p1.add(jtS);
JPanel p2 = new JPanel() ;
p2.setLayout(new GridLayout(2,1,10,10));
p2.add(p1);
p2.add(jsp);
JPanel p3 = new JPanel() ;
p3.setLayout(new BorderLayout(10,10));
p3.add(p2 , BorderLayout.CENTER);
p3.add(jbCo , BorderLayout.NORTH);
p3.add(jbSe , BorderLayout.SOUTH);
add(p3);
int confirmed = JOptionPane.showConfirmDialog(null ,
"Are you sure you want to run the Client ? " , "Confirm Run Client" ,
JOptionPane.YES_NO_OPTION);
if (confirmed == JOptionPane.YES_OPTION)
{
Connect() ;
}
if (confirmed == JOptionPane.NO_OPTION)
{
return ;
}
jbSe.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent ae)
{
try
{
rec = jtM.getText().trim() ;
oos.writeObject(rec) ;
jtS.setText("Can Send to Server");
}
catch (IOException ex)
{ jtS.setText("Can not Send to Server : IOE "); }
try
{
rec = (String)ois.readObject();
jtS.setText("Can recieve from Server ");
TA_Messages.append( rec ) ;
}
catch (IOException ex)
{ jtS.setText("Can not recieve from Server : IOE "); }
catch (ClassNotFoundException ex)
{ jtS.setText("Can not recieve from Server : CNFE "); }
}
}
);
} // end constructor
public void Connect()
{
jbCo.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent ae)
{
try
{
PNu = Integer.parseInt(jtP.getText().trim()) ;
s = new Socket("localhost" , PNu) ;
jtS.setText("Connection with Server");
ois = new ObjectInputStream(s.getInputStream()) ;
oos = new ObjectOutputStream(s.getOutputStream()) ;
}
catch(Exception e)
{ jtS.setText("NOT Connection with Server : E "); }
}
}
);
}// end Connect methode
}
// end Client_Sock Class
ويتم استدعائها من خلال الكلاس :
- الكود:
package client_sock;
import javax.swing.* ;
public class Main extends JFrame
{
public static void main(String[] args)
{
Client_Sock jf = new Client_Sock();
jf.setVisible(true);
jf.setTitle("Client");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(500 , 600);
jf.setLocation(0 , 0);
}
}
// end Main Class
أرجوا
المساعد
وشكرا جزيلا
سامر الشرفا- ..
- تاريخ التسجيل : 01/09/2013
المساهمات : 19
النقاط : 25
التقيم : 0
الدولة :
الجنس :
رد: طلب مساعدة ببرنامج محادثة بين سيرفر وزبون عن طريق شاشة
قمت بالتعديل على البرنامج وارجاعه كما كان سابقا
وذلك بحذف الدالة Connect() من البرنامجين
وارجاع عملية الضغط على زر الاتصال الى ما قبل زر الارسال
سامر الشرفا- ..
- تاريخ التسجيل : 01/09/2013
المساهمات : 19
النقاط : 25
التقيم : 0
الدولة :
الجنس :
رد: طلب مساعدة ببرنامج محادثة بين سيرفر وزبون عن طريق شاشة
نفهم من ذلك ان المشكلة تم حلهاسامر الشرفا كتب:قمت بالتعديل على البرنامج وارجاعه كما كان سابقاوذلك بحذف الدالة Connect() من البرنامجينوارجاع عملية الضغط على زر الاتصال الى ما قبل زر الارسال
السنى- ........
- تاريخ التسجيل : 18/02/2011
المساهمات : 249
النقاط : 464
التقيم : 25
الجنس :
رد: طلب مساعدة ببرنامج محادثة بين سيرفر وزبون عن طريق شاشة
لا هو اصلا لا يعمل .. عملت الدالة connect حتى لا يعمل اتصال الا بعد الضغط على زر الاتصال لانه عندما اشغل البرنامجين هناك توقيت زمني بينهما .. ومشكلة اخرى اذا وضعت كود تعريف السوكيت وقنوات الادخال والاخراج تحدث مشكلة ويعلق الزر
سامر الشرفا- ..
- تاريخ التسجيل : 01/09/2013
المساهمات : 19
النقاط : 25
التقيم : 0
الدولة :
الجنس :
| |
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: نقاش و أستفسارات الاعضاء
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
أمس في 7:09 pm من طرف moslema_r
» شركة تنظيف فرشات بالرياض
الثلاثاء مارس 26, 2024 6:26 pm من طرف moslema_r
» شركة تنظيف استراحات بالرياض
الأحد مارس 24, 2024 10:49 pm من طرف moslema_r
» كشف تسربات المياه في جدة
السبت مارس 23, 2024 7:23 pm من طرف gmalnagy
» خدمات كشف تسربات المياه بخصم 25% - اتصل الان
السبت مارس 23, 2024 7:22 pm من طرف gmalnagy
» شركة تنظيف ثريات بالرياض
الخميس مارس 21, 2024 7:23 pm من طرف moslema_r
» كهربائي منازل بالرياض
الأحد مارس 17, 2024 1:52 pm من طرف رانيا حماد
» افضل شركة نقل عفش بالرياض نقل باكستاني 40% خصم | موقع الانوار
الأحد مارس 17, 2024 1:25 pm من طرف رانيا حماد
» افضل معلم جبس بالرياض تركيب جبس بورد بالرياض 20% خصم اتصل الآن
الأحد مارس 17, 2024 1:09 pm من طرف رانيا حماد
» شراء اثاث مستعمل بالكويت بخصم 30%
الأحد مارس 17, 2024 12:54 pm من طرف رانيا حماد