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

إخواني الرجاء المساعده بأقرب فرصه

مغلق
بدأه COE في 25 سبتمبر 2003 · 5 رد · 917 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اخواني هذا كود خاص بماسنجر بدائي

وجدته في النت ولا اذكر من اين حصلت عليه

ولكن وجدت مشكله اتمنى ان اعرف كيف يمكنني حلها

حيث انه يتجمد التطبيق في حالة استخدامي للدخول للسيرفر لملف MAin1

وهو ملف مساعده وظيفته انه يستدعي التطبيق client

اللذي يتصل بالسيرفر ويمكن من خلاله التحاور

يمكنك عزيزي تجربة الكود من خلال استخدام client مباشره بعد ان تقوم بتشغيل السيرفر وتشغيل اكثر من client ليتم التحاور بينهم بكل سهوله ويسر

ولكن المشاكل تظهر عند استخدام Main1 وسأشرحه باختصار

وهو كود يحتوي على فريم وبداخله زر وعند الضغط عليه يقوم بنداء للclient ليتم تشغيله

وهذا المفترض حدوثه ولكن النتيجه مغايره حيث ان التطبيق يفتح لي فريم اصم خالي من اي شيء ومجود ويتم تجميد ايضا التطبيق الحالي

اخواني اتمنى دراسة الكود واعطائي النتائج والمساعده فيه قدر الامكان

ولكم مني الف الف تحيه وشكر

لتحميل كود الماسنجر

تم تعديل هذه المشاركة بواسطة COE في 25 سبتمبر 2003 في 02:43

#2

وهنا سأكتب لكم كل الكلاسات كامله في حال حدوث خلل بتحميلها من الموقع

لحفظ الوقت

server

==================================

import java.io.*;

import java.net.*;

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.util.*;

class connection extends Thread

{

Vector v=new Vector();

Socket conn;

DataInputStream is;

PrintStream ps;

String message;

connection c;

connection(Socket conn,Vector v)

{

this.v=v;

this.conn=conn;

try

{

is =new DataInputStream(conn.getInputStream());

ps=new PrintStream(conn.getOutputStream());

}

catch(IOException e)

{

}

start();

}

public void run()

{

try

{//i will send the message that i will recive to all other connections

while(true)

{

message=is.readLine();

for(int i=0;i<v.size();i++)

{

c=(connection)v.get(i);

c.ps.println(message);//send the message to all the clients using ps object of the printstream class

}

}

}

catch(Exception ee)

{

}

}

}

class server

{

Vector v=new Vector();

ServerSocket s;

int port=8000;

public static void main(String [] arg)

{

new server();

}

server()

{

try

{

s=new ServerSocket(8000);

while(true)

{

System.out.println("waiting for client");

v.addElement(new connection(s.accept(),v));//we make the constructor carry with him the socket and the vector to make it visible in the connection class

//we can use the inner class but this way is better when u can find it

}

}

catch(Exception ee)

{

}

}

}

****************************************

client

=====================

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.net.*;

import java.io.*;

class client extends JFrame

{

Socket mysocket;

DataInputStream is;

PrintStream ps;

// String ip="170.112.50.11";

String ip="127.0.0.1";

int port=8000;

String message;

JButton b=new JButton("Send");

JTextArea t=new JTextArea(50,50);

JTextField f=new JTextField("",20);

mychatroom action1= new mychatroom();

public static void main(String []arg)

{

new client();

}

client()

{

b.addActionListener(action1);

Container c=getContentPane();

t.setEnabled(false);

c.add(t);

c.add("East",B);

c.add("South",f);

setSize(300,300);

setVisible(true);

try

{

mysocket=new Socket(ip,port);

is=new DataInputStream(mysocket.getInputStream());

ps=new PrintStream(mysocket.getOutputStream());

while(true)

{

message=is.readLine();

t.append(message);

t.append("\n");

}

}

catch(Exception e)

{}

}

///////////////////////////////////////////////////////

class mychatroom implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

String s = e.getActionCommand();

if (s.equals("Send"))

{

ps.print(mysocket.getLocalAddress().getHostName()+" says:");

ps.println(f.getText());

}

}}}

**************************************8

Main1

=========================

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class main1 extends JFrame {

JButton jButton1 = new JButton();

client c;

public main1() {

try {

jbInit();

}

catch(Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args)

{

main1 main1 = new main1();

main1.setSize(300,300);

main1.setVisible(true);

}

private void jbInit() throws Exception {

jButton1.setBounds(new Rectangle(129, 33, 110, 38));

jButton1.setText("Open");

jButton1.addActionListener(new main1_jButton1_actionAdapter(this));

this.getContentPane().setLayout(null);

this.getContentPane().add(jButton1, null);

}

void jButton1_actionPerformed(ActionEvent e) {

new client();

//c.validate();

// this.remove(1);

}

}

class main1_jButton1_actionAdapter implements java.awt.event.ActionListener {

main1 adaptee;

main1_jButton1_actionAdapter(main1 adaptee) {

this.adaptee = adaptee;

}

public void actionPerformed(ActionEvent e) {

adaptee.jButton1_actionPerformed(e);

}

}

*******************************

ولكم التحيه

لتحميل الكود

تم تعديل هذه المشاركة بواسطة COE في 25 سبتمبر 2003 في 02:45

#3

السلام عليكم

مبدئيا قبل ما اقرا الكود اعتقد الحل انك تعمل thread فى الفريم اللى بيظهر ناقص

#4

السلام عليكم

فى داخل الكونستركتور بتاع الكلينت توجد مهمتين اولاهما تحميل المكونات الازرار وباقى مكونات الفريم والمهمة الثانية هى عمل connection والاستماع الى السيرفر من خلال الكود

{

mysocket=new Socket(ip,port);

is=new DataInputStream(mysocket.getInputStream());

ps=new PrintStream(mysocket.getOutputStream());

while(true)

{

message=is.readLine();

t.append(message);

t.append("\n");

}

}

catch(Exception e)

{}

}

وهنا تقع المشكلة ولذلك ضع احد المهمتين فى thread لتبادل العمل بينهم وتحميلهم سويا

سلام

#5

ارجو منك عزيزي اضافة الThreed للكود واعطائي اياه لدراسته لانني لا اجيد استخدامها للاسف فاتمنى منك معاونتي ولك التحيه

#6

فعلا المشكلة تكمن بال Thread

وقد تم القضاء عليها

ولك التحيه

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

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