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

إضافة Bottun يظهر المستخدمين المتصلين بالسيرفر

بدأه baby heart في 19 يناير 2011 · 5 رد · 524 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

( Java) إضافة Bottun يظهر المستخدمين المتصلين بالسيرفر

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

انا عندي برنامج جاهز بلغة الجافا وابغى اعرف كيف اضيف له Bottun يظهر لي المستخدمين المتصلين بالسيرفر :confused::confused:

البرنامج TCP Chat

هنا السيرفر


// SYNOPSIS: TCPChatServer
// DESCRIPTION: The program creates a TCP socket in the inet
// listen for connections from TCPClients, accept
// clients into private sockets.
////////////////////////////////////////////////////////////////

import java.io.*;
import java.net.*;
import java.util.*;
import static java.lang.System.out;

class EchoServe extends Thread {

private Socket socket;
private BufferedReader in;
private PrintWriter out;

public EchoServe (Socket s)
throws IOException {
socket = s;
System.out.println("Serving: "+socket);
in =
new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
// Enable auto-flush:
out =
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream())), true);
// add the connected client out stream to the vector
TCPChatServer.outToClients.add(out);
// If any of the above calls throw an
// exception, the caller is responsible for
// closing the socket. Otherwise the thread
// will close it.
start(); // Calls run()
}
public void run() {
try {
while (true)
{
System.out.println("....Server is waiting...");
String str = in.readLine();
if (str== null ) break;
TCPChatServer.boradcast(str);
}
System.out.println("Disconnected with.."+socket);
// Remove client from the vector
} catch (IOException e) {
} finally {
try {
socket.close();
} catch(IOException e) {}
}
}
}

public class TCPChatServer {
Vector<String> users = new Vector<String>();
static Vector <PrintWriter> outToClients = new Vector<PrintWriter>();
static int PORT=12345; // assign to next avalible Port.

public static void boradcast(String message) {
// send message to all connected users
for ( PrintWriter c : outToClients )
{
c.println(message);
c.flush();
}

}
public static void main(String[] args)
throws IOException {
if (args.length == 1) {
PORT=Integer.parseInt(args[0]); // assign to a given Port.
}
// Create a Server Socket.
ServerSocket s = new ServerSocket(PORT);
InetAddress addrs= InetAddress.getLocalHost();
// Or InetAddress addrs= InetAddress.getByName("localhost");
// Or InetAddress addrs= InetAddress.getByName("127.0.0.1");

System.out.println("TCP/Server running on : "+ addrs +" ,Port "+s.getLocalPort());

try {
while(true) {
// Blocks until a connection occurs:
Socket socket = s.accept();
try {
new EchoServe(socket); // Handle the incoming Client.
} catch(IOException e) {
// If it fails, close the socket,
// otherwise the thread will close it:
socket.close();
}
}
} finally {
s.close();
}
}
} ///:~

//: TCPChatServer.java

وهناا الكلاينت


import java.awt.event.*;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import java.net.Socket;
import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.JOptionPane;
import static java.lang.System.out;

public class TCPChatClient extends JFrame implements ActionListener {

private final String screenName;

// GUI stuff
private JTextArea enteredText = new JTextArea(10, 32);
private JTextField typedText = new JTextField(32);

// socket for connection to chat server
private Socket socket;

// for writing to and reading from the server
private BufferedReader in;
private PrintWriter out;

public TCPChatClient(String screenName, String hostName) {

// connect to server
try {
socket = new Socket(hostName, 12345);
in =
new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
// Enable auto-flush:
out =
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream())), true);
}
catch (Exception ex) { ex.printStackTrace(); }
this.screenName = screenName;

// close output stream - this will cause listen() to stop and exit
addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
out.close();
}
}
);


// create GUI stuff
enteredText.setEditable(false);
enteredText.setBackground(Color.PINK);
typedText.addActionListener(this);

Container content = getContentPane();
content.add(new JScrollPane(enteredText), BorderLayout.CENTER);
content.add(typedText, BorderLayout.SOUTH);


// display the window, with focus on typing box
setTitle("Chat Client 1.0: [" + screenName + "]");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
typedText.requestFocusInWindow();
setVisible(true);

}

// process TextField after user hits Enter
public void actionPerformed(ActionEvent e) {
out.println("[" + screenName + "]: " + typedText.getText());
typedText.setText("");
typedText.requestFocusInWindow();
}

// listen to socket and print everything that server broadcasts
public void listen() {
String s;
try{

while ((s = in.readLine()) != null) {
enteredText.insert(s + "\n", enteredText.getText().length());
enteredText.setCaretPosition(enteredText.getText().length());
}
out.close();
in.close();
} catch(IOException e) {}
try { socket.close(); }
catch (Exception e) { e.printStackTrace(); }
System.err.println("Closed client socket");
}

public static void main(String[] args) {
String name = JOptionPane.showInputDialog ( "Enter your name" );
TCPChatClient client = new TCPChatClient(name, "localhost");
client.listen();
}
}

import java.awt.*;

تم تعديل هذه المشاركة بواسطة baby heart في 19 يناير 2011 في 09:20

#2

لماذا تريد ان تقوم باضافه زرار

مع العلم انه عند الكتابه والضغط على زرار enter

يقوم بارسال البيانات

Software Developer
Mahmoudkelany.com


 

#3

اريد اضافة ازرار عند النقر عليه يظهر لي قائمة بالمتصلين بالسيرفر

اتمنى وصلت المعلومة :)

#4

هتعمل frame بيكون فيه مثلا Jlist بتحتوى على الclients

وكل ما تضيف client جديد تحدث هذه الـ List

بس

انما زرار مش هينفع من غير Frame وكمان لم تحدث الـ List يقبى مش هتحتاج لزرار

زى كدا

post-217802-034180100 1295432335_thumb.p

المرفقات
chatServer.png

Software Developer
Mahmoudkelany.com


 

#5

شكرا جزيلا لك :blush: :blush:

واذا عندك موقع يعلم اساسيات الجافا ياليت تساعدني فيه لأن شرح دكتورتنا لك عليه شويه :wacko:

وشكرا مرة أخرى يا أخ محمود :happy:

#6

بصراحه موقعنا هنا خير من يعلمك

انظرى هذه المواضيع

دروس - مقالات - مواضيع مميزة

بعض الأسئلة الأكثر شيوعاً

هتلاقى بداخلها مواضيع اخرى هذه مواضيع مهمه

Software Developer
Mahmoudkelany.com


 

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…