File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
Win a copy of Clojure in Action this week in the Clojure forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Socket : MultiClient Server

 
Karl Vaicek
Greenhorn
Posts: 11
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 47
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
 
Ulf Dittmer
Rancher
Pie
Posts: 42966
73
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Both these codes suffer from a fundamental flaw: Don't println to a Socket
 
Karl Vaicek
Greenhorn
Posts: 11
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thank you, Prabhakaran, this is really useful!!
 
I agree. Here's the link: http://aspose.com/file-tools
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic