This week's giveaway is in the Android forum.
We're giving away four copies of Android Security Essentials Live Lessons and have Godfrey Nolan on-line!
See this thread for details.
The moose likes Sockets and Internet Protocols and the fly likes Socket : MultiClient Server Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Java » Sockets and Internet Protocols
Bookmark "Socket : MultiClient Server" Watch "Socket : MultiClient Server" New topic
Author

Socket : MultiClient Server

Karl Vaicek
Greenhorn

Joined: Mar 01, 2010
Posts: 11
Hello,

I need to make following server in to MultiClient. I'm new in JAVA, so I can not figure it out. I don't even know if it's possible to make it in any easy way, because I tried to look for any possible information or help and I failed, so, if it's not too complicated, if anyone can help to me?
This server is not written by me, I took it from JAVA SUN page.

Natesan Prabhakaran
Ranch Hand

Joined: Jul 11, 2006
Posts: 47
Hi karl, the below program will help you much.

Server:
public class TCPServer{
private ServerSocket server;
private int port = 7777;

public TCPServer() {
try {
server = new ServerSocket(port);
} catch (IOException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
TCPServer example = new TCPServer();
example.handleConnection();
}

public void handleConnection() {
System.out.println("Waiting for client message...");

while (true) {
try {
Socket socket = server.accept();
ConnectionHandler cd = new ConnectionHandler(socket);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}


for each client separate Thread will be created

Thread Class: ConnectionHandler

class ConnectionHandler implements Runnable {
private Socket theclient;
ServerSocket serverSocket = null;

public ConnectionHandler(Socket theclient) {
this.theclient = theclient;

Thread t = new Thread(this);
t.start();
}

public void run() {
try
{
PrintWriter out = new PrintWriter(theclient.getOutputStream(),true);
BufferedReader in = new BufferedReader(new InputStreamReader(theclient.getInputStream()));
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

String inputLine, outputLine;
while((inputLine=in.readLine()) != null) {
out.println();

System.out.println("From Client:"+inputLine);
outputLine=input.readLine();
out.println(outputLine);

if (inputLine.equals("Bye"))
break;
}
out.flush();

out.close();
in.close();
theclient.close();
serverSocket.close();

} catch (IOException e) {
e.printStackTrace();
}
}
}


Client:

public class TCPClient {
public static Socket clientSocket = null;
public static PrintWriter out = null;
public static BufferedReader in = null;
public static int port=0;
static InetAddress mcAddress=null;

public static void main(String[] args) {
try
{
mcAddress = InetAddress.getByName("228.1.2.3");
port = Integer.parseInt("7777");
clientSocket = new Socket("localhost", port);
out = new PrintWriter(clientSocket.getOutputStream(), true);

in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

String userInput;
String inetAddress = clientSocket.getInetAddress().getHostName();
out.println(inetAddress);
while((userInput = input.readLine())!= null)
{
out.println(userInput);
System.out.println("From Server: "+ in.readLine());
out.flush();
}

out.close();
in.close();
input.close();
clientSocket.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}


-Prabhakaran

Regards,
Prabhakaran.N
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 41141
    
  45
Both these codes suffer from a fundamental flaw: Don't println to a Socket


Ping & DNS - my free Android networking tools app
Karl Vaicek
Greenhorn

Joined: Mar 01, 2010
Posts: 11
Thank you, Prabhakaran, this is really useful!!
 
jQuery in Action, 2nd edition
 
subject: Socket : MultiClient Server
 
Similar Threads
Qn regarding sockets in SCJD
applet loading forever...
Socket problem
sockets and printwriting
2 JavaTutorial Errors quick fix