aspose file tools*
The moose likes Java in General and the fly likes Socket Question Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Soft Skills this week in the Jobs Discussion forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "Socket Question" Watch "Socket Question" New topic
Author

Socket Question

ricky gonzalez
Ranch Hand

Joined: Jun 30, 2000
Posts: 167
Hi, I have a question about sockets. Each socket has to have a unique combination of ip address and a port number. So, I have this code that creates multiple instances of a client with local host ip, and IDENTICAL port number. It works but I have no idea how? Can someone help me understand it?
Thanks.
import java.net.*;
import java.io.*;
import java.net.*;
import java.io.*;
class JabberClientThread extends Thread {
private Socket socket;
private BufferedReader in;
private PrintWriter out;
private static int counter = 0;
private int id = counter++;
private static int threadcount = 0;
public static int threadCount() {
return threadcount;
}
public JabberClientThread(InetAddress addr) {
System.out.println("Making client " + id);
threadcount++;
try {
socket =
new Socket(addr, MultiJabberServer.PORT);
} catch(IOException e) {
System.err.println("Socket failed");
}
try {
in =
new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
out =
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream())), true);
start();
} catch(IOException e) {
try {
socket.close();
} catch(IOException e2) {
System.err.println("Socket not closed");
}
}
}
public void run() {
try {
for(int i = 0; i < 25; i++) {
out.println("Client " + id + ": " + i);
String str = in.readLine();
System.out.println(str);
}
out.println("END");
} catch(IOException e) {
System.err.println("IO Exception");
} finally {
try {
socket.close();
} catch(IOException e) {
System.err.println("Socket not closed");
}
threadcount--;
}
}
}
public class MultiJabberClient {
static final int MAX_THREADS = 40;
public static void main(String[] args)
throws IOException, InterruptedException {
InetAddress addr =
InetAddress.getByName(null);
while(true) {
if(JabberClientThread.threadCount()
< MAX_THREADS)
new JabberClientThread(addr);
Thread.currentThread().sleep(100);
}
}
}
Van Glass
Ranch Hand

Joined: Nov 18, 2000
Posts: 110
I'm not sure I understand but I think that you are really wanting to use a ServerSocket and not a Socket. The ServerSocket must bind to a unique IP/port combination. The Socket class does not have this restriction.
For example. You could easily have multiple web clients (Socket) connecting to a Web server (ServerSocket). You cannot however have multiple Web servers (ServerSocket) running on the same port.
Hope this helps.
------------------
JFind - Your Java Resource www.jfind.com
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Socket Question