Sockets and Channels?

Hi,
I have just completed the chapter about 'Channels' in the book I am reading. I was completely new to these since I had never seen them or heard of them before! Thus I am feeling quite confused on when these should be used and why!
Basically each time I asked networking question I always got the same answer, that is 'sockets'. Socket programming is quite strait forward in Java and in my opinion not that much complicated. However Channels, which for me are completely new, seem to be very complicated! Also it seem that I can achieve with Sockets all that I can achieve with Channels with the only difference of 'non-Blocking' which I do understand, but maybe on giving it the just amount of importance!
Thanks for any comments,
Regards,
Sim085

I'm not all too good with NIO (Channels) but I think I can answer you.
Channels are event driven, so no need for a separate thread to wait for connections (lots of waiting), one thread per a connection to do the communication (and generally do a lot of waiting) etc. Everything can be done in one thread, selector will pick the proper channel when an event occurs. Also, sometimes you might need non-blocking reads, as you said you can't achieve those with Sockets.
...someone correct/fill me if I said anything wrong/incomplete....

Similar Messages

  • Need help on Socket and HTTP

    Hi,
    I need help ... please ... I have to use socket and not HTTPURLConnection
    I try to connect with a socket to a web server (apache2) and request one page but two times.
    The first time it works well but the second one it doesn't ... I get a null message.
    Why ?
    Does the server close the socket as soon as the page is sent ?
    If it doesn't how I can continue sending and receiving data on the same socket ?
    Here is my code:
    package test;
    import java.net.*;
    import java.io.*;
    public class Test
    private String laRequete = new String(
    "POST http://localhost:5577/Test/ HTTP/1.0\r\n"+
    "Host:localhost:5577\r\n"+
    "\r\n");
    PrintWriter laSortie;
    BufferedReader lEntree;
    Socket laSocketTCP;
    public Test()
    String tmp;
    try
    laSocketTCP = new Socket("localhost", 5577);
    laSortie = new PrintWriter(laSocketTCP.getOutputStream());
    lEntree = new BufferedReader(new InputStreamReader(laSocketTCP.getInputStream()));
    laSortie.println(laRequete);
    laSortie.flush();
    // Premier essai OK
    System.out.println(lEntree.readLine());
    while((tmp = lEntree.readLine()) != null)
    System.out.println(tmp);
    // Second essai => Not OK
    laSortie.println(laRequete);
    laSortie.flush();
    System.out.println(lEntree.readLine());
    while((tmp = lEntree.readLine()) != null)
    System.out.println(tmp);
    catch (Exception e)
    e.printStackTrace();
    public static void main(String args[])
    Test tp = new Test();
    Here is the result of the execution
    HTTP/1.1 200 OK
    Date: Wed, 29 Sep 2004 08:35:35 GMT
    Server: Apache/2.0.51 (Win32)
    Last-Modified: Wed, 29 Sep 2004 08:27:57 GMT
    ETag: "23a46-9a-56c93f9a"
    Accept-Ranges: bytes
    Content-Length: 154
    Connection: close
    Content-Type: text/html; charset=ISO-8859-1
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> Index Test 1 </TITLE>
    </HEAD>
    <BODY>
    Test 1
    </BODY>
    </HTML>
    null
    Thanks, bye.

    Send an HTTP 1.1 request instead of a 1.0 request.
    HTTP 1.0 does not support keeping the connection open, so yes, the server closes the connection.
    Dave.

  • Conflict between socket and RMI

    Hi
    I wrote a program in client-server using socket and it was fine. I also wrote a client-server program using RMI. Fine as well. But after I connected the client-server using socket (open socket, send-receive messages, close socket), then use RMI. I got java.rmi.NotBoundException.
    Would anyone have a look and provide your feedback please? Thanks.
    big J
    *****************this is Server.java ***************************
    package single;
    import java.io.*;
    import java.rmi.Naming;
    import java.rmi.RemoteException;
    import java.net.*;
    import java.rmi.*;
    public class Server
    extends Thread {
    public static final int SOCKETPORT = 5555;
    private String serverName;
    public Server() throws IOException {
    System.out.println("*** socket opened ***");
    serverName = new String("localhost");
    ServerSocket serverSocket = new ServerSocket(SOCKETPORT);
    Socket socket = serverSocket.accept();
    InputStream is = socket.getInputStream();
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
    System.out.println(bufferedReader.readLine());
    OutputStream os = socket.getOutputStream();
    PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(os), true);
    printWriter.println("from server");
    os.close();
    is.close();
    socket.close();
    System.out.println("*** socket closed ***");
    public void runServer() {
    System.out.println("*** start of run():RMI ***");
    System.setSecurityManager(new SecurityManager());
    try {
    RMIInterfaceImpl rMIInterfaceImpl = new RMIInterfaceImpl();
    Naming.bind("//" + serverName + ":9999/RMIInterface", rMIInterfaceImpl);
    catch (RemoteException ex) {
    catch (MalformedURLException ex) {
    catch (AlreadyBoundException ex) {
    System.out.println("*** end of run():RMI ***");
    public static void main(String args[]) throws Exception {
    Server server = new Server();
    server.runServer();
    ******************this is Client.java **************************
    package single;
    import java.io.*;
    import java.net.*;
    import java.rmi.Naming;
    public class Client {
    private String serverName;
    private final static int SOCKETPORT = 5555;
    public Client() throws IOException {
    serverName = new String("localhost");
    Socket socket = new Socket(serverName, SOCKETPORT);
    OutputStream os = socket.getOutputStream();
    PrintWriter printWriter=new PrintWriter(os, true);
    printWriter.println("from client");
    InputStream is = socket.getInputStream();
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
    System.out.println(bufferedReader.readLine());
    is.close();
    os.close();
    socket.close();
    public void runClient() throws Exception {
    System.out.println("*** start of runClient():RMI ***");
    System.setSecurityManager(new SecurityManager());
    RMIInterface rMIInterfaceImpl = (RMIInterface) Naming.lookup(
    "//" + serverName + ":9999/RMIInterface");
    String str = rMIInterfaceImpl.print();
    System.out.println(str);
    rMIInterfaceImpl.serverSide();
    System.out.println("*** end of runClient():RMI ***");
    public static void main(String args[]) throws Exception {
    Client client = new Client();
    client.runClient();
    ***************** this is RMIInterface.java ***********************
    package single;
    import java.rmi.Remote;
    import java.rmi.RemoteException;
    interface RMIInterface
    extends Remote {
    String print() throws RemoteException;
    void serverSide() throws RemoteException;
    ********************* this is RMIInterfaceImpl.java ***************
    package single;
    import java.rmi.RemoteException;
    import java.rmi.server.UnicastRemoteObject;
    public class RMIInterfaceImpl
    extends UnicastRemoteObject
    implements RMIInterface {
    public RMIInterfaceImpl() throws RemoteException {}
    public String print() {
    return new String("hello world");
    public void serverSide(){
    System.out.println("this should appear in serverside");

    I think you have a timing problem between your client and server. As soon as your client and server programs have finished their socket communication, they will both do their "runServer"/"runClient" methods. If the client attempts to lookup the server before the server has registered itself via Naming.bind(), I would expect that's why you're getting a NotBoundException in the client.
    You probably wouldn't use the design of your test client/server for something significant, but a quick and dirty way to make this work might be to have the client call Thread.sleep() for a few seconds before trying to do the lookup.

  • Hello, I use photoshop cc 10 days and I did a lot of files with layers and channels. For two days in two different locations that only happens in some documents when you reopen the job done no more .. Example 6 channels on the facts I see only one .. Than

    Hello, I use photoshop cc 10 days and I did a lot of files with layers and channels.
    For two days in two different locations that only happens in some documents when you reopen the job done no more .. Example 6 channels on the facts I see only one ..
    Thank you for your attention.
    Annalisa 

    Don't understand what you writing here.  Screen shoots would be most helpful.
    Supply pertinent information for quicker answers
    The more information you supply about your situation, the better equipped other community members will be to answer. Consider including the following in your question:
    Adobe product and version number
    Operating system and version number
    The full text of any error message(s)
    What you were doing when the problem occurred
    Screenshots of the problem
    Computer hardware, such as CPU; GPU; amount of RAM; etc.

  • Rename of Business systems and channels in PRD system

    Hi all,
    I am doing a rework of some scenarios in PI. I will rename business systems and channels.
    When we move the new objects to Prduction and activate what is the best order to stop processing in PI before the switch over.
    Is it
    1)Stop PI inbound queues.(Deregister queues)
    2)Check all outbound queues are empty.
    3)Stop outbound queus (Deregister queues)
    4)Stop all channels
    5)Import all new objects
    6)Delete old configuration and business systems and channels.
    7)Activate all new configuration.
    8)Activate all channels.
    9)Register all queues.
    10)Check all sender systems for failed (eg Outbound IDoc) and resend.
    Have i missed anything?
    What is the best way to handle sender for the following adapter types(HTTP , Proxy, RFC, SOAP)
    Thank you for your input.

    Hello,
    The following note provides details on this procedure:
    #870864  Starting and Stopping an XI 3.0 / PI 7.0 System
    For 7.1:
    http://help.sap.com/saphelp_nwpi71/helpdata/EN/12/5dd23aaad7b3408dde3c1577fda5b3/content.htm
    Kind regards,
    Sarah

  • Incorrect detection of double-clicks in layers and channels windows. (Mac OS X 10.6.8)

    Photoshop will detect a double-click in the layers and channels panels even when there are different modifier keys held down on the first click vs. the second click.
    I have never intended to double-click and accidentally changed the modifiers I was holding down between clicks.  I often perform an action requiring modifier keys and immediately follow it with an action that requires no modifiers (or different modifiers).
    I realize that the conventions for what constitutes a double-click are platform dependent and not particularly well documented, but I do expect Photoshop to work the way that my operating system does (Mac OS X 10.6.8)).  I know older versions of Windows detected double-clicks even when modifiers were changed between clicks, but I believe the latest versions behave similarly to OS X.
    Examples:
    Start by having a document open with multiple alpha channels and layers in it.
    Select an alpha channel by clicking on it's thumbnail in the channels panel.
    Quickly hold down the control key and click again.
    Result: this brings up the "Channel Options" window. (as if you had double-clicked)
    Expected result: should bring up the channel's contextual menu.
    Bonus extra nitpick:  The window opened on mouse-down, not on mouse-up.
    Create a non-blank alpha channel.
    Hold down the command key and click on that alpha channel's thumbnail. (loads the channel into the selection)
    Quickly release the command key and press the mouse button.
    Result: Brings up the "Channel Options" window. (as if you had double-clicked)
    Expected result: Start a drag operation on the channel.
    Click on a layer in the layers panel to select it.
    Move the mouse pointer to a different layer.
    Hold down the shift key and click to select multiple layers.
    Quickly release the shift key and press the mouse button.
    Result: Brings up the "Layer Style" window.  (as if you had double-clicked)
    Expected result: Begin a drag operation.
    Bonus extra nitpick:  The window opened on mouse-down, not on mouse-up.
    Interestingly the layers panel does the correct thing when control is pressed between clicks, but the channels panel does not.
    The options windows opening on mouse-down instead of mouse-up has never bothered me, but I believe it goes against convention.
    Thanks.

    Very detailed report, Jay. I was able to see exactly what you're talking about, and reproduce this using my trackpad. I'm wondering if this is an OS issue, or something that can be tweaked in Photoshop. Even with files in Finder, you can activate a double-click even with a slight hesitation, which is similar to the behavior in Photoshop.

  • How to define in different controls device and channels in a DAQmx function?

    Hi,
    I need to build a vi that permits the user to change the device of a DAQmx  acquisition system, although I don't want that the user modify the input channels. I`d like to know if it is possible to define in different controls device and channels.
    []´s
    Juliana

    Hello Juliana,
    What you would like to do is possible with some simple string manipulation.  First you will need a Device Name constant from the DAQmx >> Advanced >> DAQmx Constants & Property Nodes palette.  Right-click on the constant and turn it into a control.  Then, use a concatenate strings function to join the device name with the rest of the characters you need to define your input channels.  Wire the output of the concatenate strings VI to your DAQmx Create Channel VI.
    Let me know if you have any questions on this.
    Thanks,
    Laura

  • Problem with the socket and the standard output stream

    Hy, I have a little problem with a socket program. It has the server and the client. The problem is that the client at one point in the program, cannot print messages in the console.
    My program does the next: the server waits connections, when a client connects to it, the server gets outputstream to the socket and writes two strings on it. Meanwhile, the client gets the inputstream to the socket and reads on it with a loop the two strings written by the server . The strings are printed by the client in the console. The problem starts here; once the read strings are printed ,I mean, after the loop, there are other System.out.println in the client but the console doesnt print anything . It curious that only when I comment on the server code the line that says: "br.readLine()" just before the catch, the client prints all the System.out.println after the loop but why?
    Here is the code:
    Server code:
    public class MyServerSocket {
    public MyServerSocket() {
    try{
    ServerSocket server= new ServerSocket(2000);
    System.out.println("servidor iniciado");
    Socket client=server.accept();
    System.out.println("Client connected");
    OutputStream os=client.getOutputStream();
    PrintWriter pw= new PrintWriter(os);
    String cadena1="cadena1";
    String cadena2="cadena2";
    pw.println(cadena1);
    pw.println(cadena2);
    pw.flush();
    InputStream is=client.getInputStream();
    InputStreamReader isr= new InputStreamReader(is);
    BufferedReader br= new BufferedReader(isr);
    br.readLine(); //If a comment this line, the client prints after the loop, all the System.out....
    catch (IOException e) {
    // TODO: handle exception
    public static void main(String[] args) {
    new MyServerSocket
    Client code:
    public class MyClientSocket {
    public MyClientSocket () {
    try{
    Socket client= new Socket("localhost",2000);
    InputStream is=client.getInputStream();
    InputStreamReader isr= new InputStreamReader(is);
    BufferedReader br= new BufferedReader(isr);
    String read;
    while((read=br.readLine())!=null){
    System.out.println(read);
    //These messages are not printed unless I comment the line I talked about in the server code
    System.out.println("leido");
    System.out.println("hola");
    }catch (IOException e) {
    public static void main(String[] args) {
    new MyClientSocket
    }

    You are right but with this program the loop ends. As you see, the first class, the Server, writes to the socket one text file. The second class, the client, reads the text file in his socket written by the server and writes it to a file in his machine.
    NOTE: The loop in the client ends and the server doesnt make any close() socket or shutdownOutput() .
    public class ServidorSocketFicheromio {
         public ServidorSocketFicheromio() {
    try{
         ServerSocket servidor= new ServerSocket(2000);
         System.out.println("servidor iniciado");
         Socket cliente=servidor.accept();
         System.out.println("cliente conectado");
         OutputStream os=cliente.getOutputStream();
         PrintWriter pw= new PrintWriter(os);
         File f = new File("c:\\curso java\\DUDAS.TXT");
         FileReader fr= new FileReader(f);
         BufferedReader br= new BufferedReader(fr);
         String leido;
         while((leido=br.readLine())!=null){
              pw.println(leido);
         pw.flush();
         }catch (IOException e) {
         * @param args
         public static void main(String[] args) {
              new ServidorSocketFicheromio();
    public class ClienteSocketFicheromio {
         public ClienteSocketFicheromio() {
    try{
         Socket cliente= new Socket("localhost",2000);
         File f = new File("G:\\pepe.txt");
         FileWriter fw= new FileWriter(f);
         PrintWriter pw= new PrintWriter(fw);
         InputStream is=cliente.getInputStream();
         InputStreamReader isr= new InputStreamReader(is);
         BufferedReader br= new BufferedReader(isr);
         String leido;
         while((leido=br.readLine())!=null){
              pw.println(leido);
              System.out.println(leido);
              System.out.println("leido");
              System.out.println("hola");
              pw.flush();
         }catch (IOException e) {
         public static void main(String[] args) {
         new ClienteSocketFicheromio();/
    }

  • Problems with sockets and InputsStreams

    Hi,
    I ve this code:
    InputStream is = null;
    boolean ok=true;
    while(ok){
    //sc is an object instance of socketConnection
    is = sc.openInputStream();
    return this.parse(is);
    //is.close();
    return "";
    and this exception is produced:
    java.io.IOException: no more Input Streams available.
    This exception is produced in the line:
    is = sc.openInputStream();
    I m connecting to a server and this server sends data throw a socket... but the problem is that when i m reading from this socket and this socket doesn t have data in it...
    how could i solve this problem...?
    Thanks,
    Diego

    That would be the "real" code:
    public String process()throws IOException{
    InputStream is = null;
    is = sc.openInputStream();
    String result= this.parse(is);
    is.close();
    any suggestions?
    Thanks,
    Diego

  • How to connect Master socket and extension to fibr...

    I have just had my fttp service enabled.
    I watched the online video on how to connect my phone, and it says that if you don't have the special socket that allows you to switch from copper to fibre, you should just connect the phne to the modem.
    I don't have the socket, just a normal phone socket right next to the modem.
    How do I connect my extensions? Can I just connect my modem to the socket and go from there, or do I need to do anything else?
    Sorry folks, I know very little about this stuff! 

    There is a guide here.
    http://bt.custhelp.com/app/answers/detail/a_id/37138/related/1
    My guess is that you would have to disconnect your extension wiring from the old master socket, and plug it into the Tel 1 socket via a phone splitter, if you need a phone near the fibre modem.
    There are a few other FTTP users on this forum, who may be able to give you more advice.
    There are some useful help pages here, for BT Broadband customers only, on my personal website.
    BT Broadband customers - help with broadband, WiFi, networking, e-mail and phones.

  • Rss; item and channel glitch

    Hi,
    Thanks so much for the previous input.
    Now- I went to ensure the rss is accurate through feedburner and I get this Issue/Problem ...lol.
    [This is bit strange, because previously the rss was fine since january up until recently.]
    rss feed:
    http://www.spheresofessence.com/rss/empodcast.xml
    Below is the Error Message:
    Sorry
    This feed does not validate.
    line 25, column 1: Undefined itunes:category element: item (8 occurrences) [help]
    <item>
    ^
    line 114, column 2: XML parsing error: <unknown>:114:2: mismatched tag [help]
    </channel>
    again, I tried adjusting things exactly like the tech specs.I tried both space between each item and space between last item and channel and with no spaces..still didn't validate in feedburner.
    What is not accurate?
    Any help or suggestions would be appreciated.
    Thanks!! :-D
    mystic

    I had this same problem, but it wasn't an issue with the "<item>" tag -- as I had thought for the last hour or so.
    Looking immediately above the <item> in my code, and comparing sample text side by side, I realized that I had improperly closed (or failed to close) the tag above.
    In my case, it is the <itunes:category> tag, which much be closed with an </itunes:category> tag ... or at least in this case it must.
    Have a look just above <item> and see if that does the trick.
    Good luck.

  • Properties (group and channel) added are not a numeric data type.

    I am using a dataplugin to add both group and channel custom properties. The properties are both text and numeric, doubles and integers.
    When I create a query in Navigator, I select the custom property using the dropdown, but the operator dropdown only has "=" or "<>". The property displayed in the Data Portal is a float number. I was having this problem when I was adding custom properties using a script. I then tried "Navigatorettings/My DataFinder/Reset/Reset Index", then repopulated my Search Area, using the dataplugin on my raw data files. At this point, all my properties only have the "=" or "<>" operator choices in the query.
    So it appears that my properties are numeric in the Data Portal, but string in the Navigator Query.
    In advance, thanks
    Solved!
    Go to Solution.

    Hi Bill,
    could it be the properties you are talking about are already "optimized" for query?
    In case yes, did you do the optimization by script like
    Dim oMyDataFinderSettings
    Set oMyDataFinderSettings = Navigator.ConnectDataFinder("My DataFinder").GetSettings()
    Call oMyDataFinderSettings.OptimizeCustomProperty(eSearchChannel, "Author_age")
    And did you do this, before DataFinder has indexed some of your files?
    In case yes, DataFinder has to make a guess the datatype of the property without example - so always "string" is chosen.
    (If DataFinder has already indexed some(or better all) files containing the property, DataFinder will "optimze" the property in the datatype which occurs most for this property.)
    In case you know the datatype of the property you are about to "optimze", you can provide this information to DataFinder
    Call oMyDataFinderSettings.OptimizeCustomProperty(eSearchChannel, "myText", DataTypeString)
    Call oMyDataFinderSettings.OptimizeCustomProperty(eSearchChannel, "myInt", DataTypeInt32)
    Call oMyDataFinderSettings.OptimizeCustomProperty(eSearchChannel, "myFloat", DataTypeFloat64)
    Call oMyDataFinderSettings.OptimizeCustomProperty(eSearchChannel, "myDate", DataTypeDate)
    Stefan

  • Implementing sockets and threads in a jframe gui program

    Hi, I am trying to find a solution to a problem I am having designing my instant messenger application.
    I am creating listening sockets and threads for each client logged into the system. i want to know if there is a way to listen to other clients request from the main gui and then if another client tries to establish a connection with me for example, a thread is created for that client and then my chat gui opens automatically has soon has the other client sends his or hers first text message to me.
    I am relatively new at socket programming has I am currently studying along this area. I know how to create threads and sockets but I am having trouble finding out a solution to my problem. Here is the code that I have done so far for the listening method from my main gui, and the thread class of what I have done so far.
    listening socket:
         private void listeningSocket()
                ServerSocket serverSocket = null;
                boolean listening = true;
                try
                    //listen in port 4444;
                    serverSocket = new ServerSocket(4444);
                catch(IOException x)
                    JOptionPane.showMessageDialog(null, "cannot listen to port 4444", null, JOptionPane.ERROR_MESSAGE);
                while(listening)
                    client_thread w;
                    try
                       w = new client_thread(serverSocket.accept(), jTextArea1);
                       Thread t = new Thread(w);
                       t.start();
                    catch(IOException x)
                         JOptionPane.showMessageDialog(null, "error, cannot start new thread", null, JOptionPane.ERROR_MESSAGE);
            }thread class:
    import java.io.*;
    import java.net.*;
    import javax.swing.*;
    import java.sql.*;
    import java.awt.event.*;
    * @author jonathan
    public class client_thread extends Thread
         //define new socket object
        private Socket client_user = null;
        private JTextArea textArea;
        public client_thread(Socket client_user, JTextArea textArea)
            this.client_user = client_user;
            this.textArea = textArea;
        public void run()
            BufferedReader in = null;
            PrintWriter out = null;
            String error = "error has occured, messege was not sent";
            String messege = null;
             try
                //create input and output streams
                in = new BufferedReader(new InputStreamReader (client_user.getInputStream()));
                out = new PrintWriter(client_user.getOutputStream(), true);
                while(true)
                   //read messege sent by user
                   messege = in.readLine();
                    //display messege in textfield
                   out.println(messege);
                   textArea.append(messege);
            catch (IOException e)
                //error messege
                JOptionPane.showMessageDialog(null, error, null, JOptionPane.ERROR_MESSAGE);
    }

    Seems like all you need to do is create a new dialog for each socket that is established. Your current design looks like it will attempt to use the same textarea for all the sockets.
    I would say in your thread class do the following:
    MyConversationDialog dialog = new MyConversationDialog();
    while(true)
                   //read messege sent by user
                   messege = in.readLine();
                    //display messege in textfield
                   out.println(messege);
                   dialog.setVisible (true);
                   dialog.addMessage (message);
                }

  • Simple question about sockets and streams - please answer it!

    Hi
    I have a server socket and a client socket. Both are up and runing. But I'm having problems to send a string from the client and read only the four first bytes on the server. Please read the code and some other comments below:
    socket client:
    DataOutputStream out =
    new DataOutputStream(socket.getOutputStream());
    // read from keyboard input
    BufferedReader myinput =
    new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Type any 4 chars and [enter].");
    String any = myinput.readLine();
    out.writeBytes(any);
    out.flush();
    server socket:
    in = new DataInputStream(socket.getInputStream());
    byte[] id = new byte[4];
    in.read(id, 0, 4);
    System.out.print(new String(id));
    According to the code, it should read 4 bytes from the input stream (in.read(id, 0, 4)), but it displays only the first byte. For example, if I type "hello" on client, the serve should show "hell" but it shows just "h"
    Any ideias? Thanks!

    Hi,
    Check the Javadoc for 'in.read(id, 0, 4);' This reads up to 4 bytes and returns the number of bytes read. You need something along the lines of
    int count = 0;
    while (count < 4)
    count += in.read(id, count, 4-count);
    Roger

  • Whats the difference between sending messages via socket and MQs?

    Whats the difference between sending messages via socket and MQs?

    Soph wrote:
    Whats the difference between sending messages via socket and MQs?With JMS (and the like) your application uses a socket to connect to a central server called a "*Message Broker*". Over this connection it can send or receive messages.
    A Message Broker is somewhat analogous to a database server. Multiple clients connect to it to exchange messages. As with a database a client first establishes a connection, then requests specific facilities like subscriptions.
    It creates a strong decoupling between sender and receiver and handles stuff like allowing multiple receivers for the same message, queuing of messages for applications not currently running and so on.
    (And don't worry, you can get perfectly good message brokers for free such as openMQ and activeMQ.)

Maybe you are looking for

  • Trailing Underscore added to folder name

    In using Visio 2013 to create an HTM file from a VSD, a folder is also created, containing many little files used to display the HTM in a browser. Example. VSD named DaleTest, HTM file named DaleTest.HTM, folder named DaleTest_files. I am working rem

  • Key Listener

    Hello, I have a problem with KeyEvents in an application running on Linux (jdk1.3). In this application, I have a class which extends JPanel and implements KeyListener. Now I try to catch a KeyEvent by class MyPanel extends JPanel implements KeyListe

  • I want to know the price of led of iphone 4

    i want to know the price of led of iphone 4

  • Linking Notes and Contacts to Calendar entries

    One of the features I loved on the Palm OS was the ability to make a Calendar entry, then link contacts, notes, and documents to the calendar entry. This functionality comes in very handy for scheduling a business meeting, then linking the contact fi

  • Disabling Applications that Automatically Start

    A handful of years ago I set up my system to automatically start a couple of applications every time I start the computer. How do I disable them?