Date: Wed, 28 Oct 1998 23:35:56 -0800 From: Mahadevan Iyer <iyer@internetdevices.com> To: java-port@FreeBSD.ORG, freebsd-java@FreeBSD.ORG, saurabh@internetdevices.com, iyer@internetdevices.com, namit@internetdevices.com Subject: Possible Bug in JVM socket code on FreeBSD, java.net.Socket Message-ID: <36381ADB.DCCDAB3D@internetdevices.com>
next in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
[-- Attachment #2 --]
import java.net.*;
import java.io.*;
import java.util.*;
class DataThread extends Thread {
Vector _connections;
public DataThread(Vector connections) {
_connections = connections;
}
public void run() {
int i = 0;
String[] message = {
"Hello",
"how",
"are",
"you"
};
while(true) {
i++;
try {
Thread.sleep(100);
if(_connections.isEmpty())
continue;
int index = i % _connections.size();
Socket s = (Socket)_connections.elementAt(index);
try {
s.getOutputStream().write(message[i % 4].getBytes());
}
catch(Exception e) {
System.out.println("Removing socket : " + String.valueOf(index));
_connections.removeElementAt(index);
}
System.out.print('.');
}
catch(Exception e) {
e.printStackTrace();
}
}
}
}
public class TServer {
ServerSocket _server;
Vector _clients;
public TServer(int port) throws Exception {
_server = new ServerSocket(port);
System.out.println("Listening on port : " + String.valueOf(port));
_clients = new Vector();
DataThread dt = new DataThread(_clients);
dt.start();
while(true) {
try {
Socket s = _server.accept();
_clients.addElement(s);
System.out.println("Accepted connection : " + String.valueOf(_clients.size()));
}
catch(Exception e) {
System.out.println("Error Accepting connection : " + String.valueOf(_clients.size()));
e.printStackTrace();
break;
}
}
}
public static void main(String[] args) throws Exception {
if(args.length == 0) {
System.out.println("Usage: java TServer <port>");
System.exit(1);
}
int port = Integer.parseInt(args[0]);
TServer server = new TServer(port);
}
}
[-- Attachment #3 --]
import java.net.*;
import java.io.*;
import java.util.*;
public class TClient {
Vector _connections;
public TClient(String host, int port, int max) throws Exception {
_connections = new Vector();
System.out.println("Initializing TClient");
if(System.getProperty("DELAY") != null)
System.out.println("Using DELAY");
else
System.out.println("NOT Using DELAY");
long t1 = System.currentTimeMillis();
while(_connections.size() < max) {
try {
Socket s = new Socket(host, port);
System.out.println("Connection # : " + String.valueOf(_connections.size()));
_connections.addElement(s);
if(System.getProperty("DELAY") != null) {
System.out.println("DELAY");
Thread.sleep(10);
}
}
catch(Exception e) {
System.out.println("Error Connection # : " + String.valueOf(_connections.size()));
e.printStackTrace();
break;
}
}
long t2 = System.currentTimeMillis();
System.out.println("Average Connection time : " +
String.valueOf( (t2 - t1)/max));
}
public void poll() {
try {
while(true) {
for(int i = 0; i < _connections.size(); i++) {
Socket s = (Socket)(_connections.elementAt(i));
if(s.getInputStream().available() > 0) {
byte[] data = new byte[s.getInputStream().available()];
s.getInputStream().read(data);
String message = new String(data);
// System.out.print(String.valueOf(i) + " : " + message + "; ");
System.out.print(String.valueOf(i) + "; ");
}
}
Thread.sleep(100);
System.out.print('.');
}
}
catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
if(args.length < 3) {
System.out.println("Usage: java TClient <server> <port> <maxconnections>");
System.exit(1);
}
int port = Integer.parseInt(args[1]);
int max = Integer.parseInt(args[2]);
TClient client = new TClient(args[0], port, max);
client.poll();
}
}
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?36381ADB.DCCDAB3D>
