• 0
aymoon1987

إرسال البيانات من applet إلى servlet

سؤال

بحثت في مواقع عديدة عن درس يشرح عملية الربط بين ال applet وال servlet عن طريق ال serialization ولم أجد .

انا أحاول عمل chat عن طريق الربط بين الapplet والservlet وبعد ان تم الربط لا أستطيع أن أرسل الرسالة الى كل من يستخدم الـapplet .

تم تعديل بواسطه علاء الصالحي
تعديل العنوان لكي يناسب ما انتهى إليه المو&#1
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

29 إجابة على هذا السؤال .

  • 0

ليس الأمر بهذه الصعوبة

أنتا لديك اتصال مباشر بين سيرفلت وأبلت

استخدم http لعملية النقل

ترسل صورة أو غيره

حاول ولننظر ما الذي ستحصل عليه

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هذا هو كود ال Applet

public class post extends javax.swing.JApplet {

String Nickname = "Guest";

/** Initializes the applet post */
public void init() {
this.setSize(450, 200);
try {
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
Nickname = JOptionPane.showInputDialog("Enter Your NickName");
initComponents();
jLabel1.setText("WelCome , " + Nickname);
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
}

/** This method is called from within the init() method to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jPanel1 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jLabel1 = new javax.swing.JLabel();

jButton1.setText("Send");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});

jTextField1.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
jTextField1KeyPressed(evt);
}
});

jTextArea1.setColumns(20);
jTextArea1.setEditable(false);
jTextArea1.setForeground(new java.awt.Color(204, 0, 0));
jTextArea1.setRows(5);
jTextArea1.setSelectionColor(new java.awt.Color(0, 153, 153));
jScrollPane1.setViewportView(jTextArea1);

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 305, Short.MAX_VALUE)
.addGap(18, 18, 18)
.addComponent(jButton1)))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 222, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel1)
.addContainerGap())
);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
}// </editor-fold>
void updatetext(String msg) {
jTextArea1.append(msg + "\n");
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
send();
jTextField1.setText("");
}

private void jTextField1KeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
send();
jTextField1.setText("");
}
}

// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
// End of variables declaration

private void send() {
ObjectOutputStream outputToServlet = null;
try {
//URL cURL = new URL(getCodeBase()+"please");
URL cURL = new URL("http://localhost:8080/ptest/please");
URLConnection servletConnection = cURL.openConnection();
servletConnection.setDoInput(true);
servletConnection.setDoOutput(true);
servletConnection.setUseCaches(false);
servletConnection.setRequestProperty("Content-Type", "application/octet-stream");
outputToServlet = new ObjectOutputStream(servletConnection.getOutputStream());
String str = Nickname + ">>" + jTextField1.getText();
outputToServlet.writeObject(str);
outputToServlet.flush();
outputToServlet.close();
readServletResponse(servletConnection);
} catch (Exception e) {
}
}

public void readServletResponse(URLConnection servletConnection) {
BufferedReader inFromServlet = null;
try {
inFromServlet = new BufferedReader(new InputStreamReader(servletConnection.getInputStream()));
String str;
while (null != ((str = inFromServlet.readLine()))) {
System.out.println("Reading servlet response: " + str);
updatetext(str);
}
inFromServlet.close();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.toString());
}
}
}

وكود الservlet

public class please extends HttpServlet {
static chatHistory his = new chatHistory();
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
ObjectInputStream inputFromApplet = null;
String msg = null;
PrintWriter out = null;
try {
inputFromApplet = new ObjectInputStream(req.getInputStream());
//msg = (String) inputFromApplet.readObject();
Object obj = inputFromApplet.readObject();
JOptionPane.showMessageDialog(null, "Class is "+obj.getClass().toString());
msg = (String) obj;
inputFromApplet.close();
String message =msg;
out = new PrintWriter(resp.getOutputStream());
resp.setContentType("text/plain");
out.println(message);
out.flush();
out.close();
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "I'm servlet"+ex.getMessage());
}
}


@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}

public class myMassage implements Serializable {

String Message;
String NickName;

public myMassage() {
}

public myMassage(String Mes, String Nick) {
Message = Mes;
NickName = Nick;
}
}
}

الكود شغال يرسل ويستقبل String

ولكن مع كل applet على حدة ولا يرسل الى جميع ال applets

هل من طريقة بإستخدام ال sessions أو ال IP كي يرسل الى كل من يستخدم ال applet ؟؟؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

من الذي يرسل الملف؟

هل هو الأبلت أم السيرفلت؟

لماذا لا تستخدم معمارية خادم/عميل

بدلاً من servlet

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ماذا تعني ب :

لماذا لا تستخدم معمارية خادم/عميل
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

sever/client architecture

بما أن العميل لدينا عبارة عن أبلت

فلماذا سيرفلت؟

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ال client عبارة عن الapplet والservlet عبارة عن السيرفر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لماذا سيرفليت؟

لماذا لا يكون سيرفر عادي؟

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

آسف لم أكن أعلم انني أستطيع أن أجعله كسيرفر عادي . لقد استخدمت الsockets في البرنامج ووجدت انها أسهل طريقة لعمل ما أريد ولكن بعد ان استخدمت الseocketserver في الـserver side لم أستطع ان أجعلها في web application حتى الآن فقط تعمل بإستخدام أمر java في ال cmd line .

أحاول الآن أن أي طريقة أن أجعلها تعمل في الserlvlet او web listener .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هل تقصد أن هناك موقع كامل

تقوم السيرفلت بإرساله للعميل

السيرفلت تقوم بفتح خط مع العميل

عن طريق المنفذ 8080 يمكنك أن تجعل هناك نوعين من الطلب

الطلب الأول تقوم من خلاله بإرسال الموقع

والطلب الثاني تقوم من خلاله بإرسال الكائن للمستخدم

وهذا يعتمد على إضافة كعكة تخبر السيرفلت أن هذا applet

جرب وأخبرني بالنتيجة

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

1 - ارسال الـobject من ال applet الى الservlet عن طريق الـhttp لتجنب الfirewall

2 - الservlet يستقبل الobject ويخزنه في الserver-side

3 - جميع الapplets تستخدم thread يطلب ال object من ال servlet

وبهذه الطريقة استطعت أن أحرك شكل في applet بإستخدام ال mouse ويحدث update لجميع الapplets المتصلة بالservlet ويتحرك بها الشكل أيضا .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

جيد جدا..

لماذا لا تضع ملخص عن عملك و بالاضافة الى الكود

لكي تعم الفائدة و يتعلم باقي الاعضاء

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

هذا هوة كود ال servlet

public class ChatServlet extends HttpServlet {

private ChatGroup cg; // for storing client information

@Override
public void init() throws ServletException {
cg = new ChatGroup();
}

@Override
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException // look at the cmd parameter to decide which message the client sent
{
String command = request.getParameter("cmd");
System.out.println("Command: " + command);

if (command.equals("hi")) {
processHi(request, response);
} else if (command.equals("bye")) {
processBye(request, response);
} else if (command.equals("who")) {
processWho(response);
}else if (command.equals("view")){
processView(request, response);
} else if (command.equals("msg")) {
processMsg(request, response);
} else if (command.equals("send")) {
processSnd(request, response);
}else if (command.equals("read")) {
processRead(request, response);
} else {
System.out.println("Did not understand command: " + command);
}
}

private void processHi(HttpServletRequest request,
HttpServletResponse response)
throws IOException {
int uid = -1;
String userName = request.getParameter("name");

if (userName != null) {
uid = cg.addUser(userName);
}
if (uid != -1) {
Cookie c = new Cookie("uid", "" + uid);
response.addCookie(c);
}

PrintWriter output = response.getWriter();
if (uid != -1) {
output.println("ok");
} else {
output.println("no");
}
output.close();
}

private void processBye(HttpServletRequest request,
HttpServletResponse response)
throws IOException {
boolean isDeleted = false;
String userName = request.getParameter("name");

if (userName != null) {
int uid = getUidFromCookie(request);
isDeleted = cg.delUser(userName, uid);
}

PrintWriter output = response.getWriter();
if (isDeleted) {
output.println("ok");
} else {
output.println("no");
}
output.close();
}

private int getUidFromCookie(HttpServletRequest request)
{
Cookie[] cookies = request.getCookies();
Cookie c;
for (int i = 0; i < cookies.length; i++) {
c = cookies[i];
if (c.getName().equals("uid")) {
try {
return Integer.parseInt(c.getValue());
} catch (Exception ex) {
System.out.println(ex);
return -1;
}
}
}
return -1;
}

private void processWho(HttpServletResponse response)
throws IOException {
PrintWriter output = response.getWriter();
output.print(cg.who());
output.close();
}
private void processSnd(HttpServletRequest request,
HttpServletResponse response)
throws IOException /* Message format:
ChatServlet?cmd=send&name=??&msg=?? + uid cookie
Add the message to the server's list
*/ {
boolean isStored = false; // default for failure
String userName = request.getParameter("name");
String msg = request.getParameter("msg");

System.out.println("msg: " + msg);

if ((userName != null) && (msg != null)) {
int uid = getUidFromCookie(request);
isStored = cg.storeXY(userName, uid, msg);
}

PrintWriter output = response.getWriter();
if (isStored) {
output.println("ok");
} else {
output.println("no");
}
output.close();
}
private void processMsg(HttpServletRequest request,
HttpServletResponse response)
throws IOException /* Message format:
ChatServlet?cmd=msg&name=??&msg=?? + uid cookie
Add the message to the server's list
*/ {
boolean isStored = false; // default for failure
String userName = request.getParameter("name");
String msg = request.getParameter("msg");

System.out.println("msg: " + msg);

if ((userName != null) && (msg != null)) {
int uid = getUidFromCookie(request);
isStored = cg.storeMessage(userName, uid, msg);
}

PrintWriter output = response.getWriter();
if (isStored) {
output.println("ok");
} else {
output.println("no");
}
output.close();
}
private void processView(HttpServletRequest request,
HttpServletResponse response)throws IOException
{
int uid = -1;
String userName = request.getParameter("name");

if (userName != null) {
uid = getUidFromCookie(request);
}
PrintWriter output = response.getWriter();
if (uid != -1) {
output.print(cg.view(userName, uid));
output.flush();
} else {
output.println("no");
}
output.close();
}

private void processRead(HttpServletRequest request,
HttpServletResponse response)
throws IOException {
int uid = -1; // default for failure
String userName = request.getParameter("name");

if (userName != null) {
uid = getUidFromCookie(request);
}

PrintWriter output = response.getWriter();
if (uid != -1) {
output.print(cg.read(userName, uid));
output.flush();
} else {
output.println("no");
}
output.close();
} // end of processRead()
} // end of ChatServlet class

ومعه كلاستين الأولى تحتويى على بيانات ال person والأخرى تحتوي على كل ما يراد تخزينه بالسيرفر

public class Person {

private static final int ID_MAX = 1024;
private String userName;
private int uid;
private int msgsIndex;

public Person(String nm) {
userName = nm;
uid = generateUID();
msgsIndex = 0;
}

public String getUserName() {
return userName;
}

public int getUID() {
return uid;
}

public int getMsgsIndex() {
return msgsIndex;
}

public void setMsgsIndex(int newIndex) {
msgsIndex = newIndex;
}

public boolean matches(String nm, int id) {
return (userName.equals(nm) && (uid == id));
}
int generateUID()
{
int temp = 0;
temp = (int) Math.round(Math.random() * ID_MAX);
return temp;
}
}

import java.util.*;

public class ChatGroup {

private ArrayList chatUsers;
private ArrayList messages;
private ArrayList values;
private int numUsers;

public ChatGroup() {
chatUsers = new ArrayList();
messages = new ArrayList();
values = new ArrayList();
numUsers = 0;
}

synchronized public int addUser(String name) {
if (numUsers == 0) {
messages.clear();
values.clear();
}

if (isUniqueName(name)) {
Person c = new Person(name);
chatUsers.add(c);
messages.add("(" + name + ") has arrived");
numUsers++;
return c.getUID();
}
return -1;
}

boolean storeXY(String userName, int uid, String msg) {
Person c = findUser(userName, uid);
if (c != null) {
values.add(msg);
return true;
}
return false;
}

private boolean isUniqueName(String name) {
Person c;
for (int i = 0; i < chatUsers.size(); i++) {
c = (Person) chatUsers.get(i);
if (c.getUserName().equals(name)) {
return false;
}
}
return true;
}

public boolean resetall() {
boolean resetted = false;
try {
messages.clear();
values.clear();
chatUsers.clear();
resetted = true;
} catch (Exception ex) {
resetted = false;
}
return resetted;
}

synchronized public boolean delUser(String name, int uid) {
if (uid == -1) {
return false;
}

Person c;
for (int i = 0; i < chatUsers.size(); i++) {
c = (Person) chatUsers.get(i);
if (c.matches(name, uid)) {
chatUsers.remove(i);
messages.add("**[" + name + "] Left The room**");
numUsers--;
return true;
}
}
return false;
}

private Person findUser(String name, int uid) {
if (uid == -1) {
return null;
}

Person c;
for (int i = 0; i < chatUsers.size(); i++) {
c = (Person) chatUsers.get(i);
if (c.matches(name, uid)) {
return c;
}
}
return null;
}

synchronized public boolean storeMessage(String name, int uid, String msg) {
Person c = findUser(name, uid);
if (c != null) {
messages.add("(" + name + ") " + msg);
return true;
}
return false;
}

synchronized public String read(String name, int uid) /*
A message may be invisible -- it may be addressed to a
single person by using the message format:
msg / toName

Message of this kind are not added to the list returned
to the client.
*/ {
StringBuffer msgs = new StringBuffer();
Person c = findUser(name, uid);

if (c != null) {
int msgsIndex = c.getMsgsIndex();
String msg;
for (int i = msgsIndex; i < messages.size(); i++) {
msg = (String) messages.get(i);
if (isVisibleMsg(msg, name)) {
msgs.append(msg + "\n");
}
}
c.setMsgsIndex(messages.size());
}
return msgs.toString();
}

synchronized public String view(String name, int uid) {
StringBuffer msgs = new StringBuffer();
Person c = findUser(name, uid);

if (c != null) {
int msgsIndex = c.getMsgsIndex();
String msg;
for (int i = msgsIndex; i < values.size(); i++) {
msg = (String) values.get(i);
if (isVisibleMsg(msg, name)) {
msgs.append(msg + "\n");
}
}
c.setMsgsIndex(values.size());
}
return msgs.toString();
}

private boolean isVisibleMsg(String msg, String name) /* A message is visible if it has no "/ name" part, or
"/ name" is the user, or the message is _from_ the user.
*/ {
int index = msg.indexOf("/");
if (index == -1) // no '/', so message is public
{
return true;
}

// does have a "/ name" part
String toName = msg.substring(index + 1).trim();
if (toName.equals(name)) // for this user
{
return true;
} else { // for another user
if (msg.startsWith("(" + name)) // but from this user
{
return true;
} else {
return false;
}
}
}

synchronized public String who() {
Person c;
StringBuffer whoList = new StringBuffer();
for (int i = 0; i < chatUsers.size(); i++) {
c = (Person) chatUsers.get(i);
whoList.append("" + (i + 1) + ". " + c.getUserName() + "\n");
}
return whoList.toString();
}
}

اما عن كود الClient فهوة عبارة عن ابلت

يرسل الى السيرفلت طلب في الrequest على حسب ما يشاء أن يفعل مثل ذلك :-

* ChatServlet?cmd=hi&name=??

* ChatServlet?cmd=bye&name=?? + uid cookie

* ChatServlet?cmd=who

* ChatServlet?cmd=msg&name=??&msg=?? + uid cookie

* ChatServlet?cmd=read&name=?? + uid cookie

* ChatServlet?cmd=send&name=??&msg=?? + uid cookie

* ChatServlet?cmd=view&name=?? + uid cookie

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بصراحة لم أعرف أين قمت بإرسال الكائن

ولم يظهر لي كيف قمت بعمل إتصال؟

هلا قمت بالتوضيح أكثر

مع العلم بأن كود الأبلت هو المهم في الموضوع

أقصد كيف عملت request؟

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لم ارسل بإستخدام ال serialization لقد قمت بالإرسال عن طريق الURL connection بواسطة ال GET Method وعن كود الأبلت

public class Pooltest extends javax.swing.JApplet {

private static final String SERVER = "http://localhost:2677/servlet/ChatServlet";
private String userName;
private String cookieStr = null;
private int BX = 0;
private int BY = 0;

/** Initializes the applet NewJApplet */
@Override
public void init() {
userName = JOptionPane.showInputDialog("Please Enter You Name");
addMouseMotionListener(new mousehandler());
initComponents();
sayHi();
//new Watcher(this, userName, cookieStr).start();
setSize(300, 300);
}

void updateXY(int x, int y) {
BX = x;
BY = y;
repaint();
}

@Override
public void paint(Graphics g) {
g.clearRect(0, 0, getHeight(), getWidth());
g.fillRect(BX, BY, 30, 30);
}

public void handleXY(String msg) {
if (msg.indexOf('\n') != -1) {
String x, y;
x = msg.substring(0, msg.indexOf('-'));
y = msg.substring(msg.indexOf('-') + 1, msg.indexOf('\n'));
BX = Integer.parseInt(x);
BY = Integer.parseInt(y);
//System.out.println("Message ="+msg+"BX="+BX+"BY="+BY);*/
repaint();
}
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {

jLabel1 = new javax.swing.JLabel();

setStub(null);

jLabel1.setText("jLabel1");

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(275, Short.MAX_VALUE)
.addComponent(jLabel1)
.addContainerGap())
);
}// </editor-fold>//GEN-END:initComponents

private void sendPOSMessage(String msg) {
try {
URL url = new URL(SERVER + "?cmd=send&name=" +
URLEncoder.encode(userName, "UTF-8") +
"&msg=" +
URLEncoder.encode(msg, "UTF-8"));

URLConnection conn = url.openConnection();
conn.setRequestProperty("Cookie", cookieStr);

BufferedReader br = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String response = br.readLine().trim();
br.close();
if (!response.equals("ok")) {
showMsgs("Message Send Rejected\n");
} else {
handleXY(msg);
}
} catch (Exception e) {
showMsgs("Servlet Error. Did not send: " + msg + "\n");
System.out.println(e);
}
}

private class mousehandler implements MouseMotionListener {

public void mouseDragged(MouseEvent e) {
int x = e.getX();
int y = e.getY();
String msg = "" + x + "-" + y;
BX = x;
BY = y;
repaint();
sendPOSMessage(msg);
}

public void mouseMoved(MouseEvent e) {
}
}


public void showMsgs(final String msg) {
System.out.println("showMsg(): " + msg);
jLabel1.setText(msg);
}

private void sayHi() {
try {
URL url = new URL(SERVER + "?cmd=hi&name=" +
URLEncoder.encode(userName, "UTF-8"));

URLConnection conn = url.openConnection();
cookieStr = conn.getHeaderField("Set-Cookie"); // get the cookie

System.out.println("Received cookie: " + cookieStr);
if (cookieStr != null) {
int index = cookieStr.indexOf(";");
if (index != -1) {
cookieStr = cookieStr.substring(0, index); // strip away extras
}
}

BufferedReader br = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String response = br.readLine().trim();
br.close();

if (response.equals("ok") && (cookieStr != null)) {
jLabel1.setText("Server Login Successful");
System.out.println("Server Login Successful");
} else {
System.out.println("Server Rejected Login");
System.exit(0);
}
} catch (Exception e) {
System.out.println(e);
System.exit(0);
}
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel jLabel1;
// End of variables declaration//GEN-END:variables
}

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author m0o0n
*/
import java.io.*;
import java.net.*;

public class Watcher extends Thread {

private static final int SLEEP_TIME = 500;
private static final String SERVER = "http://localhost:2677/servlet/ChatServlet";
private Pool client;
private String userName;
private String cookieStr = null;

public Watcher(Pool c, String nm, String cs) {
client = c;
userName = nm;
cookieStr = cs;
}

@Override
public void run() // Keep polling forever
{
URL url;
URLConnection conn;
BufferedReader br;
String line, response;
StringBuffer resp;

try {
String readRequest = SERVER + "?cmd=view&name=" +
URLEncoder.encode(userName, "UTF-8");
while (true) {
Thread.sleep(SLEEP_TIME);

url = new URL(readRequest);
conn = url.openConnection();
conn.setRequestProperty("Cookie", cookieStr);

br = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
resp = new StringBuffer(); // build up the response
while ((line = br.readLine()) != null) {
if (!fromClient(line)) // if not from client
{
resp.delete(0, resp.length());
resp.append(line + "\n");
}
}
br.close();

response = resp.toString();
if ((response != null) && !response.equals("\n")) {
client.handleXY(response);
}
}
} catch (Exception e) {
client.showMsgs("Servlet Error: watching terminated\n");
System.out.println(e);
}
} // end of run()

private boolean fromClient(String line) // A line (message) is from a client if it begins with (Name)
{
if (line.startsWith("(" + userName)) {
return true;
}
return false;
} // end of fromClient()
} // end of URLChatWatcher class

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يعطيك العافية أخي

جميل جداً

لك مني كل التحية

على فكرة من الصعب على الكثير أن يضع ما ينتجه

أحترم هذه البادرة الجميلة منك

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الشكر لك ولكل من يريد العلم .

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

تم تعديل بواسطه aymoon1987
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

عمل فعلا رائع جزاكم الله خيرا

ولكن لي ملاحظه ...

انت في ال Servlet تفحص ال command الآتي من ال clients ( hi, bye, .. (

ماذا لو اراد شخصا من ان يعدل في ال باكج و يضع command جديد ؟؟؟

سيضطر ان يعدل في الكود خاصتك !

حاول ان تجعل هذه ال commands متبادله في ال runtime

يعني اذا اراد احد ان يضيف command جديد كل ما عليه ان يرث من فئه معينه فقط

جزاكم الله خيرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

آسف جدا لتأخري بالرد

أقوم حاليا بتعديل الكود حيث يمكن للأبلت أن يرسل object كامل عبارة عن hashmap بها أي عدد من الفاريبلز وقيمة كل منهم .ومن هذا المنطلق يمكن أن يرسل الكثير من variables والتي بدورها يتم استقبالها والتعامل معها من قبل السيرفلت .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

اخي aymoon1987

انا طالب دراسات عليا من العراق واحتاج الى تصميم موقع تعليمي الذي هو الجز العملي من مشروع تخرجي Mobile learning

واحتاج الى ان تكون خدمة Chat جزء من خدمات الموقع و التي تكون بين الطالب والاستاذ وهي خدمة جدا مهمة في موقعي .

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

هل من الممكن ان استخدم برنامجك هذا في حل مشكلتي ؟

و اذا لا فهل هناك حل اخر لاضافة خدمة Chat الى موقعي ولو بصورة مبسطة الله يبارك فيك

مثلا سكربتات او مواقع تدعم هذا هذه الخدمة

علما انه انا اشتغل على jsp and netbeans

سلامي

اخوك

محمود سامي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أخ محمود سامي, جرب openMeeting

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

اخي العزيز ماذا تقصد openMeeting

ارجو ان توضح اجابيتك الله يبراك فيك اخي هويدي

رجائا تبين لي مواقع او امثلة تبين لي هذ ا الشيء

سلامي

اخوك

محمود سامي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

اخي العزيز يمكن ان توضح لي لانه عملت بحث ولم اجد شيء يفيدني

عن الموضع

سلامي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

اخي هويدي الله يعزكم ويبارك فيك لخدمة الاسلام والمسلمين ( وانا طمعت في كرمكم ووسع صدركم على اسالتي والحاحي عليكم وعلى بقية الاخوه )

ولكن ارجو ان ابين لك شيء

اولا :

بارك الله فيك على تجاوبك السريع وجعل الله هذا في ميزان حسناتكم

وان الlink عمل معي والحمد لله .(على الحاسبة )

ثانيا :

ولكن عملي هو على جهاز الموبايل لانه مشروعي هو عمل موقع تعليمي يكون الدخول اليه من اجهزة الموبايلات فارجو ان كان هناك نفس هذا الموقع ( من ناحية الفكرة ) ان ترسله لي ولكن على الموبايل

او فكرة اخرى ليس ضروري خدمة جات متكاملة ولكن حتى وان كان عملية

chat بسيطة بين شخصين ( سوى كان برنامج او موقع )

وإن شاء الله يجعل وقتك الذي تصرفة معي(في التوجيه والارشاد ) في ميزان حسناتك

سلامي

اخوك

محمود سامي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أخي محمود, كم تمنيت لو ساعدت بخصوص موضوع الموبايل هذا, ولكن ليس لدي أدني خبره بموضوع الموبايل ده خالص للأسف !

أسف أخي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .