طلب مساعدة ببرنامج محادثة بين سيرفر وزبون عن طريق شاشة
منتدى مصر التقني :: قسم لغات البرمجة 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
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
أمس في 8:56 pm من طرف moslema_r
» شركة مكافحة حشرات في راس الخيمة
أمس في 8:34 pm من طرف moslema_r
» تطبيقIncogniton لإدارة ملفات تعريف متعددة للمتصفح
الأربعاء أبريل 24, 2024 3:51 pm من طرف زاكااا
» افضل شركة مكافحة النمل الابيض بالرياض
الإثنين أبريل 22, 2024 9:41 pm من طرف moslema_r
» Exemplary Сasual Dating - Verified Women
الخميس أبريل 18, 2024 9:18 pm من طرف wdqwd
» رش الدفان بالرياض
الخميس أبريل 18, 2024 7:11 pm من طرف moslema_r
» شركة تنظيف خزانات الشارقة
الخميس أبريل 18, 2024 6:57 pm من طرف moslema_r
» شركة مكافحة الفئران بالرياض
الإثنين أبريل 15, 2024 8:23 pm من طرف moslema_r
» افضل شركة كشف تسربات المياه بالباحة
الخميس أبريل 04, 2024 7:02 am من طرف gmalnagy
» ساعدوني وفهموني help me
الجمعة مارس 29, 2024 8:37 am من طرف linesoft