Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> чат не пашет, Error : java.security.AccessControlExcep 
:(
    Опции темы
HappyMan
  Дата 30.7.2004, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: нет
Всего: 2



Загрузил исходник чата с PlanetSourceCode, сделал Аплоад, а он не работает............ mad.gif

Цитата

Error : java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:1053 connect,resolve)


http://mychat31.narod.ru/

Проверьте сайт, работает ли у вас, может кто зnает в чем дело?

Это сообщение отредактировал(а) HappyMan - 30.7.2004, 11:32


--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
Sun
Дата 30.7.2004, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: 8
Всего: 48



У твоего аплета прав нету на открытие сокета. Наверно в натройках броузера надо понизить уровень безопасности.


--------------------
Account removed
PM MAIL   Вверх
HappyMan
Дата 30.7.2004, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: нет
Всего: 2



А у тебя работает?


--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
Sun
Дата 30.7.2004, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: 8
Всего: 48



У меня не работает, я запускаю под Mozilla и он с грохотом падает. Под IE попробовать запустить сейчас нет возможности.


--------------------
Account removed
PM MAIL   Вверх
HappyMan
Дата 31.7.2004, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: нет
Всего: 2



Я этим же IE захожу на InstantChess.com и все работает! (там есть чат и он работает) Наверно проблема не в уровне безопасности, а в чем-то другом.........


--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
Kurt
Дата 31.7.2004, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: 1
Всего: 36



Пробовал запустить в IE и в Opera.
В IE работает, в Опере - виснет..


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
HappyMan
Дата 31.7.2004, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: нет
Всего: 2



2 Kurt: А в IE ошибок не появлялось??????????????????????? Странно. Что делать.....???
Добавлено @ 21:44
У меня Оперой грузится, но ошибка та же появляется sad.gif


--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
Domestic Cat
Дата 31.7.2004, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



В Safari получаю exception, а IE 5.2 for Mac дохнет. Может вы бы код с нетворкингом запостили?


--------------------

PM   Вверх
HappyMan
Дата 31.7.2004, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: нет
Всего: 2



Легко:

Цитата

/*  First of all let me thank all those of you guys who
have voted & liked my previous "single client chat application".
At their earnest request I've written this
simple multiple client chat application. I hope this turns out to be
of some use!!!!

Unlike the previous one, here you can have any number of clients. If over a network,
plz change the ip & port according to the server machine. With out any change
this should work perfectly on any win xx machine...though I haven't tested this
on win NT & XP.

Let me know if there are any probs!

In this release(V1.0) I haven't implemented the clientList and other options.
I'm thinking of upgrading this version but mind you it depends upon how many
votes I rcv, when deciding to upgrade this??!!!
So Plzzzzzzz vote for me. thankx in advance!

Yup this program is copyrighted.....you do not have permission to use this code!!!!

Just kidding guys, you can use this code in what ever manner and whereever you
feel fit...but plz leave a line or two to my credit, if this turns out to be of some help.

NOTE: To HAVE CORRECT FORMATTed VIEW OF THIS FILE OPEN IN DOS USING EDIT COMMAND.

How to run this??(if u r nu)
These are the two files needed to run the chat application...
1)chatServer.java(server, run on only one machine)
2)chatClient.java(chat.htm, downloaded as an applet by as many clients as possible)

To compile these two files you need to have JDK1.2 or higher installed on your machine. If you don't have one, you can have your free copy from http://www.sun.com. Now when you have JDK1.2 then you need to have your environment variables pointed to the right directories...
compile using the following command at the prompt
prompt:> javac chatServer.java
prompt:> javac chatClient.java
You might get one or two warnings...plz ignore them.

Now to run the program...
Type in "java chatServer" at the dos prompt...
Now you can call the chatClient applet from any html file....

For any Q's feel free to contact me.

Thankx for downloading.

You can always visit me @ http://mypal.20m.com

regards suhail.

ENJOY*/

import java.net.*;
import java.io.*;
import java.util.*;

public class chatServer
{
        public static void main(String args[]) throws Exception
        {
                ServerSocket sersoc=new ServerSocket(1053);// Any port number above 1000 should do
                // as most ports below 1000 are used by system
                Vector socvec=new Vector();
                String data="";int i,j=0;
                DataInputStream in;

                System.out.println("Listening of port " + sersoc.getLocalPort());
                System.out.println("Waiting for connections...");

                while(true)
                {
                        Socket soc=sersoc.accept();
                        socvec.addElement(soc);

                        chatServerReadThread csrt=new chatServerReadThread(socvec, soc);
                       

                        in=new DataInputStream(soc.getInputStream());
                        PrintStream out=new PrintStream(soc.getOutputStream());
                        out.println("Connected to chat server");
                        out.flush();
                        data= in.readLine();

                        for(i=0;i<socvec.size();i++)
                        {
                                soc=(Socket)socvec.elementAt(i);
                                out=new PrintStream(soc.getOutputStream());
                                out.println(data + " connected");
                                out.flush();
                               
                        }
                        System.out.println(data + " connected");

                        csrt.start();
                }
        }
}
                               

class chatServerReadThread extends Thread
{
        Vector socvec;
        PrintStream out;
        chatServerReadThread(Vector socvec, Socket soc)
        {
                this.socvec=socvec;
                try
                {
                        out=new PrintStream(soc.getOutputStream());
                }catch(Exception e){}
        }
        public void run()
        {
                try
                {
                        String data;
                        Socket soc;
                        DataInputStream in;
                        while(true)
                        {
                                for(int i=0;i<socvec.size();i++)
                                {
                                        soc=(Socket)socvec.elementAt(i);
                                        in=new DataInputStream(soc.getInputStream());
                                        if(in.available()>0)
                                        {
                                                try
                                                {
                                                        data=in.readLine();
                                                        if(data.charAt(0) == ']')
                                                        {
                                                                data = in.readLine() + " exited";
                                                                System.out.println(data);
                                                                socvec.removeElement(soc);
                                                                for(int e=0;e<socvec.size();e++)
                                                                {
                                                                        soc=(Socket)socvec.elementAt(e);
                                                                        out=new PrintStream(soc.getOutputStream());
                                                                        out.println(data);
                                                                        out.flush();
                                                                }
                                                        }
                                                        else
                                                                for(int e=0;e<socvec.size();e++)
                                                                {
                                                                        soc=(Socket)socvec.elementAt(e);
                                                                        out=new PrintStream(soc.getOutputStream());
                                                                        out.println(data);
                                                                        out.flush();
                                                                }
                                                               
                                                }catch(Exception e){socvec.removeElement(soc);}
                                        }
                                }
                        }
                }catch(Exception e){e.printStackTrace();}
        }
}



--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
Domestic Cat
Дата 31.7.2004, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Так это сервер, а сам апплет?


--------------------

PM   Вверх
HappyMan
Дата 31.7.2004, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: нет
Всего: 2



А вот и он:

Цитата

/* First of all let me thank all those of you guys who
have voted & liked my previous "single client chat application".
At their earnest request I've written this
simple multiple client chat application. I hope this turns out to be
of some use!!!!

Unlike the previous one, here you can have any number of clients. If over a network,
plz change the ip & port according to the server machine. With out any change
this should work perfectly on any win xx machine...though I haven't tested this
on win NT & XP.

Let me know if there are any probs!

In this version(V1.0) I haven't implemented the clientList and other options.
I'm thinking of upgrading this version but mind you it depends upon how many
votes I rcv when deciding to upgrade this??!!!
So Plzzzzzzz vote for me thankx in advance!

Yup this program is copyrighted.....you do not have permission to use this code!!!!

Just kidding guys, you can use this code in what ever manner and whereever you
feel fit...but plz leave a line or two to my credit, if this turns out to be of some help.

NOTE: To HAVE CORRECT FORMATTed VIEW OF THIS FILE OPEN IN DOS USING EDIT COMMAND.

You can always visit me @ http://mypal.20m.com

regards suhail.

ENJOY*/

import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.applet.*;
import java.util.Date;

public class chatClient extends Applet implements ActionListener, Runnable
{
      /* Everything is quite clear guys.
      I didn't feel any need to give comments.
      Still I've given 'em whereever I thought was necessary*/
     
      TextField msgInput, logiName;
      TextArea tranScript, curentList;
      Button sendBut, cleaBut, regBut, discBut;
      Socket soc;
      BufferedReader br;
      BufferedWriter bw;
      String name;
      Date today = new Date();
      static final char CLOSE = ']';

      // initializations
      public void init()
        {
                setBackground(new Color(192, 192, 192));
                setForeground(new Color(0, 0, 0));
                setFont(new Font("Tahoma", Font.PLAIN, 12));
                setLayout(new BorderLayout(10, 10));
                soc = null;//initialize socket connection with null


                tranScript = new TextArea();
                tranScript.setEditable(false); // It's for display only
                tranScript.setBackground(Color.white);
               
                curentList = new TextArea();
                curentList.setEditable(false); // It's for display only
                curentList.setBackground(Color.black);
                curentList.setForeground(Color.yellow);
                curentList.append("LOGED USERS\n");


                msgInput = new TextField();
                msgInput.addActionListener(this);
                msgInput.setEditable(false);
                msgInput.setEnabled(false);

                logiName = new TextField();
                logiName.setText("Type in your login name here and click the button below...");
                logiName.selectAll();
                logiName.requestFocus();
                logiName.addActionListener(this);

                discBut = new Button("Disconnect");
                discBut.setEnabled(false);
                discBut.addActionListener(this);

                cleaBut = new Button("Clear Transcript");
                cleaBut.setEnabled(false);
                cleaBut.addActionListener(this);

                sendBut = new Button("Send");
                sendBut.setEnabled(false);
                sendBut.addActionListener(this);

                regBut = new Button("Register me with the above info & connect to server");
                regBut.addActionListener(this);

                // Lay out the components

                Panel bottom = new Panel();
                bottom.setLayout(new GridLayout(4, 1));

                Panel buttonBar = new Panel();
                buttonBar.setLayout(new GridLayout(1, 3));
                buttonBar.add(discBut);
                buttonBar.add(cleaBut);
                buttonBar.add(sendBut);

                bottom.add(msgInput);
                bottom.add(buttonBar);
                bottom.add(logiName);
                bottom.add(regBut);

                Panel top = new Panel();
                top.setLayout(new GridLayout(1, 1));

                Panel disp = new Panel();
                disp.setLayout(null);
                tranScript.setBounds(1, 1, 460, 167);
                curentList.setBounds(460, 1, 110, 167);

                disp.add(tranScript);
                disp.add(curentList);

                top.add(disp);

                add(bottom, BorderLayout.SOUTH);
                add(top, BorderLayout.CENTER);
        }

        // synchronized is used to avoid race conditions
        synchronized void clearTranscript()
        {
                //Remove all the text from the transcript
                tranScript.setText("");
        }

        synchronized void addToTranscript(String msg)
        {
                // Add the message to the tranScript, followed by
                // a line-separator
                tranScript.append(msg + "\n");
        }

        public void run()
{
                while(true)
  try
                        {
                                addToTranscript(br.readLine().toString());
  }catch (Exception h){}
        }

        public void actionPerformed(ActionEvent ae)
        {
                Object sours = ae.getSource();
                if((sours == sendBut)||(sours == msgInput))
                {
                        try
                        {
                                bw.write(name + " :" + msgInput.getText());
                                bw.newLine();
                                bw.flush();
                        }catch(Exception m){}
                        msgInput.selectAll();
                        msgInput.requestFocus();
                }
                else if(sours == cleaBut)
                        clearTranscript();
                else if(sours == discBut)
                        doClose();
                else if((sours == regBut)||(sours == logiName))
                {
                        name = logiName.getText();
                        if(name.equals(""))
                        {
                                addToTranscript("Error : Login Name cannot be empty");
                                logiName.selectAll();
                                logiName.requestFocus();
                        }
                        else if(name.length()>15)
                        {
                                addToTranscript("Error : Login Name cannot be more than 10 characters long");
                                logiName.selectAll();
                                logiName.requestFocus();
                        }
                        else if(name.length()<3)
                        {
                                addToTranscript("Error : Login Name cannot be less than 03 characters long");
                                logiName.selectAll();
                                logiName.requestFocus();
                        }
                        else
                        try
                        {
                                //Put current IP address for current machine 
                                //if you didn't have an actual server and clients
                                //if you have an actual server and clients (different machines)
                                //put the appropriate server ip and port

                                soc = new Socket("127.0.0.1", 1053); // any port above 1000 should do
                                br = new BufferedReader(new InputStreamReader(soc.getInputStream()));
                                bw = new BufferedWriter(new OutputStreamWriter(soc.getOutputStream()));
                       
                                Thread th;
                                th = new Thread(this);
                                th.start();
                       
                                addToTranscript(br.readLine()+ " on " + today.toLocaleString());
                                bw.write(name);
                                bw.newLine();
                                bw.flush();

                                regBut.setEnabled(false);
                                logiName.setEditable(false);
                                logiName.setEnabled(false);
                                msgInput.setEnabled(true);
                                msgInput.setEditable(true);
                                discBut.setEnabled(true);
                                cleaBut.setEnabled(true);
                                sendBut.setEnabled(true);

                                logiName.setText("You are logged in as " + name); // to remind the user as to who he is!!!
                                msgInput.setText("Type in your message here and click send...");
                                msgInput.selectAll();
                                msgInput.requestFocus();
                        }catch(Exception e)
                        {
                                addToTranscript("Error : " + e.toString());
                                logiName.selectAll();
                                logiName.requestFocus();
                        }
                }
        }

        synchronized void doClose()
        {
                //Called when the user clicks the Disconnect button
                // or the close box on the window. close the connection, if
                // it is still open. Then close the window

                if(soc != null)
                {
                        //First inform the other side that the connection
                        // is being closed
                        try
                        {
                                bw.write(CLOSE);
                                bw.newLine();
                                bw.flush();
                                bw.write(name);
                                bw.newLine();
                                bw.flush();
                                soc.close(); // close the connection
                        }catch(IOException e){}

                        soc = null; //So we know the connection is closed

                        discBut.setEnabled(false);
                        sendBut.setEnabled(false);
                        cleaBut.setEnabled(false);
                        msgInput.setEnabled(false);
                        msgInput.setEditable(false);

                        logiName.setEditable(true);
                        logiName.setEnabled(true);
                        regBut.setEnabled(true);

                        msgInput.setText("");
                        logiName.setText("Type in your login name here and click the button below...");
                        logiName.selectAll();
                        logiName.requestFocus();
                }
        }
}



--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
Domestic Cat
Дата 31.7.2004, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



А вот и ваша проблемка:

soc = new Socket("127.0.0.1", 1053);

- такое в апплете делать нельзя.

Попробуйте

soc = new Socket(this.getCodeBase(), 1053);
или
soc = new Socket(this.getCodeBase().getHost(), 1053);

Это сообщение отредактировал(а) Domestic Cat - 31.7.2004, 23:12


--------------------

PM   Вверх
HappyMan
Дата 31.7.2004, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: нет
Всего: 2



На этот раз такое:

Цитата

Error : java.net.ConnectException: Connection timed out: connect


А у вас как - когда кнопку жмешь он добавляет в "Logged Users" ???


--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
Domestic Cat
Дата 31.7.2004, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Пошу прощения, стормозил я: веб сервер-то не ваш.

Хм, так видете ли, если вы положили апплет на народ.ру, то чтобы заработало soc = new Socket(this.getCodeBase(), 1053), на том же компьютере что и
сам веб сервер, нужно запустить ваш сервер smile.gif, что нереально.
Нужно чтобы апплет соединялся с вашим компьютером, для этого в new Socket("xxx.xxx.xxx.xxx", 1053) нужно указывать ИП адрес вашего компьютера; а апплет по доброй воле соединяться с чужим компом не будет из-за ограничений безопасности.
Чтобы все заработало, нужно либо поместить его на вашем собственном веб сервере,
либо подписать его и дать ему права на открытие сокета.

http://java.sun.com/developer/technicalArt...ecurity/Signed/

Так что мы возвращаемся к посту Sun smile.gif

Это сообщение отредактировал(а) Domestic Cat - 1.8.2004, 00:07


--------------------

PM   Вверх
HappyMan
Дата 1.8.2004, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: нет
Всего: 2



А что изменится если сервер будет мой собственный? (простите за глупый вопрос)

Спасибо за ссылочку!


--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0614 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.