[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
|
[news.eclipse.platform.swt] Re: Listening on 2 ports same time from SWT APP.
|
Ohh really, thats the right i think. Thanks. I will try this and come back
to you.
Sumit.
"Stefan Langer" <eclipse@xxxxxxxxxxxxxxxxxxxx> wrote in message
news:d86ri5$vj6$1@xxxxxxxxxxxxxxxxxxx
> sumit panchasara wrote:
>> Hi!
>> ya it is blocked. But by creating threads also it will make number of
>> threads for the same port. I want to connect to different port address.
>> "Stefan Langer" <eclipse@xxxxxxxxxxxxxxxxxxxx> wrote in message
>> news:d86ol8$r9f$1@xxxxxxxxxxxxxxxxxxx
>>
>>>sumit panchasara wrote:
>>>
>>>>Hi,
>>>>I made one SWT app. using Eclipse. I am creating two buttons for
>>>>server1,
>>>>server2 in a single application. When I press server1 it should start
>>>>listening on port 5555 and on pressing server2, should start listening
>>>>on
>>>>6666.
>>>>Clients issues related commands and servers should accept both
>>>>connections(on related ports). e.g. client1 issues command for port 5555
>>>>and
>>>>client2 issues command for port 6666.
>>>>
>>>>All clients are different machines.
>>>>Servers are on same machine. i.e. it is only one but listening on two
>>>>different ports.
>>>>
>>>>Communication Protocol I have used is TCP/IP.
>>>>
>>>>Now every thing is working fine. But for only one of these port. server
>>>>doesn't allow me to listen on second port. i.e. after pressing server1 I
>>>>can
>>>>not able to press server2. Thus Client listening on port 6666 for
>>>>example,
>>>>will not able to build connection with server.
>>>>
>>>>What to do in this case?
>>>>
>>>>Sumit.
>>>>
>>>>
>>>
>>>How are you establishing the connection? Are you creating new Threads to
>>>connect to server or are you doing it in the eventdispatch thread? If so
>>>then you are blocking the whole ui.
>>>
>>>Regards
>>>Stefan
>>
>>
>>
> Spawn a Thread for every Port you are opening and keep track of the
> thread. If the thread is allready started simply ignore the request of the
> button. If it has not been started create a Thread and start it to listen
> on the requested port.
> If you are using 1.4 or higher try using nonblocking IO.
> In Order to keep the user from pressing the button more than once you
> might try to disable it when the thread for listening on the port has been
> spawned.
>
> Something along the lines
>
> Button btnPort55 = new Button(parent, SWT.PUSH);
> btnPort55.addActionListener(new SelectionListener() {
> public void widgetDefaultSelected(SelectionEvent e)
> {
> spawnThread(66);
> }
>
> public void widgetSelected(SelectionEvent e)
> {
> spawnThread(55);
> }
> });
>
> Button btnPort66 = new Button(parent, SWT.PUSH);
> btnPort66.addActionListener(new SelectionListener() {
> public void widgetDefaultSelected(SelectionEvent e)
> {
> spawnThread(66);
> }
>
> public void widgetSelected(SelectionEvent e)
> {
> spawnThread(55);
> }
> });
>
> spawnThread(int port)
> {
> Thread thread = this.threads_.get(new Integer(port));
> if(!thread.isAlive())
> thread.start();
> }
>
> threads_ is a HashMap that holds all the threads that need to listen to a
> port keyed by the portnumber. To prevent the user from pressing the
> buttons while a thread is running simply disable them with
> btnPort55.setEnabled(false);
>
> That should give you a clue.
>
> Regards
> Stefan
>
> P.S.: Don't forget that you can only update the ui in the eventdispatch
> thread use execAsync or execSync to execute code for the ui in your
> spawned Threads.