• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Doubt in Sockets!!

 
Greenhorn
Posts: 7
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi

I have to write a Client/Server application where initially client connects to a multi threaded server and exchanges requests and after server receives data it processes and send a reply. Server also performs other activity like connecting to client back and exchange some data. Here i expect client to behave like a server so that it will run on another port or same port(im not sure about this) and accepts the server connection & request and reply back with some data.
In order to proceed I have just written a simple client/server(not multithreaded server) program that performs above activity.
But i get exception on server while it tried connected to client but gave connection refused.
I am running my client/server both programs in same pc.

Here is the code:
Server Program:



Client Program:



And following is the output in client & server respectivly:
##Client output:

Connecting to server...
Connected
Now sending data to server....
data sent to server
Listening on 4000 port

##Server output:
Server listening...3000 port
Client 192.168.200.227
Reading client data...
Data from Client########: Hello from Client
Now connecting to Client on 4000 port
Exception in thread "main" java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at ServSocket.main(ServSocket.java:29)

Please help me
I tried googling for info but could not find any docs!!

regards
 
Gunasekhar Dev
Greenhorn
Posts: 7
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Can anybody help me please where I am doing wrong in my code?
Is it a correct idea of having server connecting back to client on a particular port and exchange data with client



Pls help
regards
 
Ranch Hand
Posts: 5093
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
bit impatient are you?
Starting to scream after waiting 20 minutes for volunteers?

And not taking those 20 minutes to read the site rules which tell you to use your real full name.
 
Gunasekhar Dev
Greenhorn
Posts: 7
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Sorry

I didnt read the rules, so I didnt know that its mandatory to have full name in this forum.
Now i have updated my profile and added my full name.
Actually first after registering I have used my full name but donno why I modified it back to short name..
I apologise
 
author
Posts: 14112
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks for adjusting your name - and welcome at the Ranch!

I'm not an expert with sockets, but as far as I know, they are bidirectional: once you have a socket connection, you can both send and receive, by using the appropriate input- and output-streams. No need for a second connection to reply.

Moving this thread to "Sockets and Internet Protocols"...
 
author
Posts: 23951
142
jQuery Eclipse IDE Firefox Browser VI Editor C++ Chrome Java Linux Windows
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Ilja is correct. This is an awkward way to use sockets. Both programs are acting as both client and servers.

But to answer you question, I would say that the server is trying to connect to the client, before the client is ready to accept the connection.

Henry
 
Gunasekhar Dev
Greenhorn
Posts: 7
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks for your replies!!

But my requirement is, there are various clients who keep updating a common file which resides in server. Only one client at a time will be able to access that common file. Now everytime any updation done to that file, then file content has to be sent it back to all clients who are currently logged in.
In this scenario, server should be able to connect to client and send the file.
Any suggestions, on how to go about this in java?
 
author and iconoclast
Posts: 24207
46
Mac OS X Eclipse IDE Chrome
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Well, simply, the client needs to open the ServerSocket before connecting to the server, so that when the server tries to connect, the client is already waiting. You'll can simply use a dedicated thread to call accept(); this thread could stick around and do the processing of commands received on that thread, too.
 
Don't get me started about those stupid light bulbs.
reply
    Bookmark Topic Watch Topic
  • New Topic