Socket Programming and Applets
Hello Everyone,
I am aiming to develop an application that would communicate with an Applet. I would like to know if this is possible and if there would be any security restrictions in between?
Thank you
you were running that your own machine, and what about java permission? how to handle that? suppose i have just jre installed and all permission disabled, how will your signed jar will run, there are many more things have to be done in that context.
for doing this one have to read a lot of things
http://java.sun.com/docs/books/tutorial/security/tour1/step2.html
no personal issue, just pointing out few area.
regards
Aniruddha
Similar Messages
-
How do I make a java program that can be ran as a program or applet?
hi,
just put the methods
public static void main(String[] arg){}
//and
public init(){}
//and
public void start(){}into the class.
if you use it as an applet the main-method will be ignored
and using as program you can use init as constructor, but better write a constructor with the classname
regards -
Hi all,
I am getting problem while reading or writing to a port.
we have two different thread for reading and writing, are they synchronize by itself or we have to make it explictly.
the error i get are either of these two:
1) java.io.EOFException
2) java.net.SocketException: Broken pipei am writing server and client which is thread based, i have implemented the biderectional ,first client writes to server. server reads from client first and then writes to client ,after server write client is not able to read data written by server. i am using the ObjectRead and Object Write methods of socket .
At client when i read it gives the following error java.io.StreamCorruptedException
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at com.canarys.web.pushlet.newClient.run(Client.java:93)
please help me out how to avoid this, the object i am using is serialised, if any of u need more clarification i will paste the code also
any help regarding this will be appreciated -
I am writing a program in which i need to take a string a user and count the number of words, Characters, and
a particular sub-string. i need to Present back this info. I am a virtual beginner and i did not get any way of doing this. Please somebody help megeez man, you make it sound like your dying and need someone to save you. Since I am too lazy to write the whole program for you (and why should I?). You could use something like this to count the characters
numOfChars = sentence.length()-1;that will give you the number of characters in the string including spaces.
hmm thats enough to get you started :-p. Be sure to seach the forum to. You should be able to find the solution to your problem reletively easily. -
Server socket programming and thread
hello,
briefly this is what i have sought out to do : the server waits for the client indefinitely,upon a client requesting for service by writing a service id into the socket, a new thread of the type id as read by the server which is a sub-class of the Server (main-class) is exec'd.
the problem as i understand is that the client can send as much of data as it desires to the server and the thread can read the data it receives by the clients.the server(thread) fails to write reply to the client;eventhough out.write() is successful;the client is blocked in read() indefinitely.is it because of the thread which runs at a different port the client does not know and the server is not redirecting response to the client.
how do i read what the server(thread) writes onto the socket from the clients.thanks again,just check out this code please
public class Server extends Thread //create a multi-threaded server
/* *Creates a new instance of Server */
String serverAddr=CodeServer.ServerRun.SERVER_IP_ADDR;
int serverPortNum=CodeServer.ServerRun.SERVER_TCP_PORT;
ServerSocket sSock;
Socket cSocket;
int requestID=0;
boolean debug=true;
InputStream in =null;
OutputStream out=null;
Server ()
Server (Socket csocket)
this.cSocket = csocket;
/* start the server at specifed portNum */
private void initialise ()
try
//start the server at serverPortNum
sSock=new ServerSocket (serverPortNum);
catch (IOException ex)
ex.printStackTrace ();
/* console output of status of server */
if(debug==true)
System.out.println ("Server waiting @ "+sSock);
private void acceptRequest ()
try
this.cSocket=sSock.accept ();
if(debug==true)
System.out.println ("client socket @ "+cSocket);
catch (IOException ex)
ex.printStackTrace ();
private void readRequestID ()
/*step 1: determine the type of server before threading
*a request the the type of server got by the request ID
* number */
try
in =cSocket.getInputStream ();
requestID =in.read ();
out =cSocket.getOutputStream ();
if(debug==true)
System.out.println ("accross the client:"+requestID);
catch (IOException ex)
ex.printStackTrace ();
private void execThreadForRequest ()
/*step 2: after requestID is received on the socket.
*its time to decide the server to thread the control into.
switch(requestID)
case 1: //invoke the RegisterServer thread
new CodeServer.Core.RegistrationServer (this.cSocket).start ();
break;
case 2: //invoke the ListingServer thread
break;
case 3: //invoke the MessageTransferServer thread
break;
case 4: //invoke the CallSetupServer thread
break;
case 5: //invoke the DisconnectServer thread
break;
case 6: //invoke the ChangeUserStatusServer thread
break;
public void run ()
// client processing code here==super class does nothing here
public static void main (String args[]) throws Exception
Server s=new Server ();
s.initialise ();
/* start indefinitely the main server thread */
while (true)
/* accept() blocks the server for a request
a new request is put into a thread for processing */
s.acceptRequest (); //initialise the clientSocket
s.readRequestID (); //get the actual requested service
s.execThreadForRequest (); //start the actual server thread
/**registration service class;
*registers the IP address of the caller,callee and the status
*adds the caller to the hash table and updates status
class RegistrationServer extends Server
Socket cSocket;
InetAddress clientAddr;
DataInputStream inStream;
DataOutputStream outStream;
//Socket s=new Socket()
RegistrationServer (Socket cSocket)
this.cSocket=cSocket;
clientAddr =cSocket.getInetAddress ();
try
//init for reading status and custom message.
inStream =new DataInputStream (cSocket.getInputStream ());
outStream =new DataOutputStream (cSocket.getOutputStream ());
catch (IOException ex)
ex.printStackTrace ();
if(CodeServer.ROO.DEBUG==true)
System.out.println ("register server:"+cSocket
+" host ip:"+clientAddr.getHostName ());
public void run ()
int status=0;
String custMesg=null;
try
/* read the custom message */
if(inStream.available ()>0)
try
custMesg=inStream.readUTF ();
System.out.println (""+custMesg);
catch(EOFException e)
e.printStackTrace ();
else
custMesg="";
catch (IOException ex)
ex.printStackTrace ();
try
here is the problem, i found if i try reading accross the client
i only receive a junk value 81 always */
outStream.write(1); //write success
outStream.flush();
catch (IOException ex)
ex.printStackTrace ();
}and with the client GUI :thanks for the help.please do find time to help me out with a suggestion or two on this code. -
Can i run UDP client and UDP server socket program in the same pc ?
hi all.
when i execute my UDP client socket program and UDP server socket program in the same pc ,
It's will shown the error msg :
"Address already in use: Cannot bind"
but if i run UDP client socket program in the remote pc and UDP server socket program run in local pc , it's will success.
anybody know what's going on ?
any help will be appreciated !bobby92 wrote:
i have use a specified port for UDP server side , and for client define the server port "DatagramSocket clientSocket= new DatagramSocket(Server_PORT);"Why? The port you provide here is not the target port. It's the local port you listen on. That's only necessary when you want other hosts to connect to you (i.e. when you're acting as a server).
The server should be using that constructor, the client should not be specifying a port.
so when i start the udp server code to listen in local pc , then when i start UDP client code in local pc ,i will get the error "Address already in use: Cannot bind"Because your client tries to bind to the same port that the server already bound to. -
Socket communication between applet and an AP on simulastor
Hi!
I implemented my system under Server/Client model.
The server is running in a Set-Top-Box simulator, which
creates a ServerSocket on port 9190.
The client is an applet and using the following codes to connect to server:
==========================================
Socket socket = new Socket("127.0.0.1", 9190)
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
==========================================
When I start the applet, no exceptions are thrown,
and objects socket, in and out are not null.
But when I was trying to send a string to server,
==========================================
out.write("a string".getBytes());
==========================================
nothing happened. Server didn't get anything.
What's wrong? How can I solve this?First of all "nothing happend" is something you tell the DELL helpdesk.
This is a developer forum.
My guess is you are using somthing of a in.readLine() on the server and since the
client doesn't sent a linebreak it will hang there.
Or the client gets an AccessControlException that you silently catch and therefore get
no exception. Allthough the InputStream would be declared in the try block (according
to posted code) and can not be checked for beeing null in the catch (out of scope).
Here is some sample code of client and server, try to implement the run method in
your client and run both appTest and applet on the local machine (http://127.0.0.1).
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class appTest implements Runnable {
public appTest() {
new listner().start();
new Thread(this).start();
// main program
public static void main(String argv[]) throws Exception {
new appTest();
public void run() {
// the client
try {
Socket s = new Socket("127.0.0.1", 9190);
// if multiple messages are to be sent and received
// this is where you start a new thread
byte b[];
OutputStream out = s.getOutputStream();
InputStream in = s.getInputStream();
String message = "hello from client";
int messageLength = message.getBytes().length;
// writing the length of the message
out.write(new Integer(messageLength).byteValue());
b = message.getBytes();
// writing the message
out.write(b);
// reading the length of the message and setting the byte array to
// it
b = new byte[in.read()];
in.read(b);
// receiving the message
System.out
.println("received massage from server: " + new String(b));
out.close();
in.close();
} catch (Exception e) {
e.printStackTrace();
class listner extends Thread {
public void run() {
try {
ServerSocket srv = new ServerSocket(9190);
while (true) {
try {
System.out.println("before accepting a client");
Socket s = srv.accept();
System.out.println("after accepting a client");
// if multiple messages are to be sent and received
// this is where you start a new thread
byte b[];
OutputStream out = s.getOutputStream();
InputStream in = s.getInputStream();
// reading the length of the message and setting the
// byte array to
// it
b = new byte[in.read()];
in.read(b);
// receiving the message
System.out.println("received massage from client:"
+ new String(b));
System.out.println("sending message from server:");
String message = "hello from server";
int messageLength = message.getBytes().length;
// writing the length of the message
out.write(new Integer(messageLength).byteValue());
b = message.getBytes();
// writing the message
out.write(b);
out.close();
in.close();
} catch (Exception ex) {
ex.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} -
Java Swing and Socket Programming
I am making a Messenger like yahoo Messenger using Swing and Socket Programming ,Multithreading .
Is this techology feasible or i should try something else.
I want to display my messenger icon on task bar as it comes when i install and run Yahoo Messenger.
Which class i should use.I don't really have an answer to what you are asking. But I am developing the same kind of application. I am using RMI for client-server and server-server (i have distributed servers) communication and TCP/IP for client-client. So may be we might be able to help each other out. My email id is [email protected]
Are you opening a new socket for every conversation? I was wondering how to multithread a socket to reuse it for different connections, if it is possible at all.
--Poonam. -
Network and socket programming in python
i want to learn network and socket programming but i would like to do this in python.Reason behind this is that python is very simple and the only language i know .
anybody can suggest me which book should i pick.
the book should have following specification--
1)not tedious to follow
2)lots of example
3)starts with some networking stuff and then get into codes
thanks in advance with regards.hmm. well, your requirements are almost contradictory.
Not sure about books, except maybe dusty's.
Most python books cover at least some network programming (unless the book is topic specific).
I use lots of python-twisted at work. I mean ALOT. I wouldn't recommend it to someone looking for non-tedious though! I also like gevent/eventlet (esp. the async socket wrappers).
EDIT: Wow. My post wasn't really helpful at all. Sorry!
Last edited by cactus (2010-09-04 09:16:54) -
Hi,
I have been given a new project whereby I have to:
1) Write a class with a method that takes as an argument an xml document, communicate s with a SOAP server and return the SOAPs response (in this case a ResponseWrapper object).
2) This then has to be implemented as a Daemon, that listens to a particular socket.
The reason for this being is that it can be uploaded to a server, allowing a pearl program to send the XML to the Daemon, have this contact the SOAP server and then return the SOAPs response back to the pearl program.
I am aware that this sounds unnecessarily complicated but it does have to be implemented this way.
I have written the class and it successfully communicates with the SOAP server and returns a response, but have no idea how to implement it as a Daemon and have had no experience with socket programming.
Could anyone point me to a tutorial or give me some pointers in how to get started?
Thanks,It was an option to use a Web Service, but I was told
that due to security issues it would take to long to
write all the necessary checks and interceptors
(which I know how to do), so I should implement it
this way (which I don't know how to do); since it is
sitting behind the firewall it would not be
accessible for spoofing.Huh? You realize that tons of very sensitive information is transmitted all over the internet using Web Services right?
I have had no experience
with implementing this type of thing before, What is your level of experience then? This may be over your head. I'm not saying that sockets and daemons are advanced concepts, but I wouldn't throw a beginner into that task. -
Can we use applets as user interfaces with sockets, RMI and J2EE
Dear Sir or Madam,
Since I am a TA for software architecture class, some one ask me the following question: I think the answer is "No" based on the document on http://java.sun.com/sfaq/
How I answer the quesions? Looking forward your help!!!
1.You may have 2 applets and 2 html files. One applet with one html file may stay at a client PC and run on this PC, and the other applet with the other html file may stay at a server PC and run on this PC. In this case, all the applets are run locally.
2.Could applets works with sockets, RMI and J2EE?
3.Can we use applets as user interfaces with sockets, RMI and J2EE?
Thank you very much!
Best regards,
JingThe scenario you paint doesn't quite make sense. The "server PC" wouldn't be running an applet, normally, since applets are by definition in a web browser page, and most likely involve user interaction, and "server processes" generally are done without user interaction.
The security rules around applets are that -- by default -- applets can connect with sockets ONLY to the server from whence the applet was loaded. RMI uses sockets (J2EE is too broad a spec) and hence RMI calls would also be limited to the server from whence the applet was loaded. Within that limitation, an applet could open all the sockets it wants, so long as they are all on the server from whence the applet was loaded.
If you want two applets on two different systems to communicate with each other, the simplest way is to have them rendevous through a server process on the server(s) from whence each applet was loaded. Maybe it's PC-a <-> server-a <-> server-b <-> PC-b ...? Or maybe PC-a and PC-b both are talking to the same server.
The limitation is rooted in the security subsystem. You can specify a policy file and override anything in the security subsystem. That does mean signing the applet and then cajoling the user into agreeing to grant greater levels of security than the default. In such a case you can open sockets more broadly and then PC-a could talk directly to PC-b without going through any servers.
- David -
How to run a datagram socket client and server program
hi,
I am new to socket programming. I am following the tutorial of sun for socket programming...The link is
http://java.sun.com/docs/books/tutorial/networking/datagrams/clientServer.html
I have understood the concept, but the problem is i cannot run the program. I am using netbeans and i have created a package and stored the files QuoteServer,QuoteServerThread, QuoteClient in this package. How can i make the server program run first and then client program in netbeans
kindly help me
ThankyouI think you are trying to run both server and client
on one machine!!!
It is impossible, your server is blocking the port to
send packets, so you must run client on another
computer!!!It's not impossible to run a client and server on the same machine just for testing or as a demo. Just have the server listen on one port and the client use a different port.
No need to use 2 seperate computers. I've done it one computer before without a problem.
Nick -
RMI and Traditional network socket programming
Friends,
Please help me
What is the advantage of RMI over socket programming ?you may need to refer to a good RMI book for having a detailed answer. Since they are quite a few of em.
-
Help on Server Socket Programming??????
hello Friends,
I need your help on following:
I am the only person working on this project and the company wants me to prepare a infrastructure of this project and I should also give a demo of this project to my seniors. I will breif you up with my project:
1. There is this gif image of distillation column. i will be publishing it using JApplet or Applet.
2. This Image must be seen on internet.
3. On the circle of these Image the user will click(In all there are five circles, called as controllers)and a dialog box should open thru which user will input the float values(I am using the JOptionPane class to open this dialog box).
4. The inputed values will the be given to the C program which is the simulator for distillation column.
5. The C program will generate the output through iterations(Code entirely in C), the output of each program will then be poped up to over the image beside the respective controlled or under the respective controller but definetely over the same gif file.
6. The number of iteration will depend on how fast the C program converges the inputer parameters. And each output must be show over the gif image and when the final iteration value will appear it should remain on the image until some new value is inputted by the user again by clicking on any of the circle.
The proposed theory to do this project accoding to me is as follows:
1. Since each value must be thrown to the user. I beleive this is a real time project. So I decided to use Client Server Networking technology provided by java.
2. Then I figured out that in this project there should be 2 clients One is the GUI which is the Image screen to receive the input from the user and to show the output to the user. Second client is a java program sitting behind the server which will receive this input data from user and it will have an NATIVE method through which all this input will be given to the C simulator program.
3. The middle bridge between these two clients will be a server. Which will just pass the data to and fro from both the clients.
3. The C program will perform iterations using these input values from second client. This C program will then give each iterations output to the Java program using JNI technology. This second client then sends this output value to the GUI clients through server.
Well another very important thing, I am inexperience in the field of software so I had to do a lot of R&D and this is what I found out. Frankly I am really not sure whether this is the right path to approach to this project or there is some other correct and realistic way than this? Well friends i would certainly request you if you can suggest some other simple or rather correct path or else if this is the right path then would you please suggest me the possible hiches or perticular points where I should concentrate more.
Well i am eagerly waiting for your reply.Since you are publishing your results on the net , it will be a better idea to use JSP?Servlet/Beans architecture instead of swing
I will propose a architecture as follows:
Client : Standard Browsers, IE and NS
Middle Tier: Java Webserver/Application Server
This will depend on your budget. If u have a fat allowance go for weblogic/websphere . If u are operationg on shoe string budget try for apache , etc
In the server tier code your application in the follwing architecture
JSP for presentation: Distillation towers picture, input boxes .. etc
Servlets for business logic invocation and routing requests: Your JSP submits input values to servlets, which does the processing using Java Bean Components. Since you have a lot of Logic written in C I would suggest to encapsulate these in JavaBean components using JNI technology and reuse the code.
After processing the servlet again forwards the response to another JSP for output
Advantages:
1.Your clients can be thin as most of the processing is done at the server
2. Thread Management is taken care of by your webserver, which otherwise would be a headache
3. Writing this through low level socket programming will be much more difficult as you will write your own protocol for communication this will be error prone and not scalable
If you still decide to go for traditional client server programming using swing, use RMI for communication as I insist that socket programming is very very cumbersome...using your own protocols
hope this helps
Shubhrajit -
Client Server program using Applets for client
Creating a client server program using Applets for the clients.
Having problems distrubting the message from client to client
using ObjectOutputStreams/ObjectInputSteams.
I can connect each client to simple server and respond with by writting
the i/o stream of each client but unable to communicate from client to client. If any one out there has in tips of creating a class of objectOutputStreams that holds a array of ObjectOutputStreams and then broadcasts the message to every client, it would be much appreciated
Thanks.Cheers poop for your reply
I never explained the problem properly. What it is I am trying to set up a Client Server program using Applets as the clients GUI. The problem is broadcasting the message to multiply client connnection(s).
Below is code, each client can connect and send message to the server. The problems is broadcasting the message to every client connection. The every client can input a message but only the last connected client can receive the message?????? Thanks in advance..
/*this my server class */
import java.io.*;
import java.net.*;
public class Server extends JFrame
private static final int ServerPort=8080;
private static final int MaxClients=10;
private ObjectOutputStream output=null;
private ObjectInputStream input=null;
private BroadCastMessage broadcastMessage;
public void runServer()
BroadCastMessage broadcastMessage= new BroadCastMessage();
try
{ //connect to server
ServerSocket s = new ServerSocket(ServerPort,MaxClients);
//listen to port 5000 for new connections
///max is 25
System.out.println("Server listening on port "+ServerPort);
while (state.isProgramRunning())
try
/// sGUI.waitForConnection();//new line
s.setSoTimeout(100);
//enable times in server-socket
while (true)
Socket incoming = s.accept();
//wait and accept connnections from serverSocket
//instance of the class,pases the new connection and message
//spawn as a thread
SocketConnection connection=new SocketConnection(incoming,broadcastMessage);
Thread a = new Thread(connection); a.start();
System.out.println(state.getConnectionCount()+"Connection received from :"+incoming.getInetAddress());
catch(InterruptedIOException x){}
while (state.getConnectionCount()>0);
System.exit(0);
}catch (IOException e){}
public static void main(String[] args)
Server s =new Server();
s.runServer();
/*this is my socket connection thread*/
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
public class SocketConnection implements Runnable
private ObjectOutputStream out;
private ObjectOutputStream output=null;
private ObjectInputStream input=null;
private BroadCastMessage passOnMessage;
private Socket theConnection=null;
private String Inmessage="";
private int Ocount;
public SocketConnection(Socket caller,BroadCastMessage broadcastMessage,Ocount)
theConnection =caller;///(5000,n)
Ocount=ncount;
passOnMessage=broadcastMessage;
public void run()
try
getStreams();
processConnection();
catch(Exception e)
{String clientDetails=("connection from IP Address: "+theConnection.getInetAddress());}
private synchronized void getStreams() throws IOException
{ //get streams to send and receive data
//set up output buffer to send header information
///Ocount++;
//create new objectoutputstream
output=passOnMessage.getOutputObject(output,theConnection,Ocount);
///flush output buffer to send header info.
Ocount++;
//set up input stream for objects
input =new ObjectInputStream(
theConnection.getInputStream());
System.out.print("\nGot I/O streams\n");
private synchronized void processConnection()throws IOException
//process connection with client
String Outmessage =" count : "+status.getConnectionCount();
//send connection successful message to client
Outmessage=Outmessage+"SERVER>>>Connection successful";
output.writeObject(Outmessage);
output.flush();
do ///process messages sent from client
try
Inmessage = (String) input.readObject();
System.out.println(Inmessage);
/* //while the connection is open each line
that is passed from the client to the server
is read in and is displayed*/
messageDetails.setMessage(Inmessage);
String CurrentMessage=messageDetails.getMessage();
//output.writeObject(CurrentMessage);
// output.flush();
passOnMessage.FloodMessage(CurrentMessage);
//sending out the message
catch(ClassNotFoundException classNotFoundException){}
}while (!Outmessage.equals("CLIENT>>>TERMINATE"));
/*this my attempt at broadcasting the message to all clients
my thinking was that you could create a array of objectoutputstreams
which in turn could be broadcasted(bit confussed here)*/
import java.io.*;
import java.net.*;
public class BroadCastMessage /// implements Runnable
private int count;
private String Inmessage="";
private ObjectOutputStream temp=null;
private ObjectOutputStream[] output = new ObjectOutputStream [12];
//temp level of array of objects
public BroadCastMessage()
count=0;
public synchronized void FloodMessage(String message) throws IOException
System.out.print(count);
for(int i=0;i<count+1;i++)
try
{ System.out.print(count);
output[count].writeObject(message);
output[count].flush();
catch(IOException ioException)
{ioException.printStackTrace();}
notifyAll();
public ObjectOutputStream getOutputObject(ObjectOutputStream out,Socket caller,int Ocount)
try
{ temp = new ObjectOutputStream(caller.getOutputStream());
AddObjectOutputStream(temp,Ocount);
////FloodMessage();
catch(IOException ioException)
{ioException.printStackTrace();}
return temp;
public void AddObjectOutputStream(ObjectOutputStream out,int Ocount)
{ ///add new object to array
count=Ocount;
output[count]=out;
System.out.print("\nthe number of output streams : "+count+"\n");
}
Maybe you are looking for
-
The notification center is telling me I must delete the account first before I add another account, but I cannot find, for the life of me, how to delete that account from being integrated on my computer. My friend got on facebook when I first had Mou
-
A message pops up on my computer telling me that I cannot connect my iphone because itunes needs to be updated and i have tried everything i can think of to update it but it still wont work
-
N96 - Unable to switch off the Status Light
I am trying to disable the illumination light for the rim around the scroll key. I downloaded the N96 user guide from your site which says that the phone has the option under Tools > Settings > General > Personalisation > Standby Mode > Status Light.
-
My HP Photosmark 6510e All In One won\'t print in black
My HP All in One e printer is not printing in black. I am running W7 64bit. The printer is wireless. It was working fine until today. I put in a new black cartgride, ran printer tests and alignment. The printer is printing in color only. I have
-
Migrate time machine backup to Yosemite
I bought a new mac. My old mac was backed to an external disk up using time machine. I connected the external disk to my new machine and powered up. The first thing that launches on first power-up is a special piece of software called migration assis