Amigos realmente não sei como implementar.
Mas o fabricante de um dispositivo me disse que preciso responder qualquer string assim que
alguem se conectar so socket do servidor;.
Seguindo código abaixo como poderia implementar :??
Obrigado;
[code]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
public class TCPServer {
private int serverPort = 2008;
private ServerSocket serverSocket;
private List<ConnectionService> connections = new ArrayList<ConnectionService>();
int x=0;
public TCPServer() {
try {
serverSocket = new ServerSocket(serverPort);
System.out.println("Waiting...");
while (true) {
x++;
Socket socket = serverSocket.accept();
System.out.println("Connected: " + socket);
ConnectionService service = new ConnectionService(socket);
service.start();
}
} catch (IOException e) {
System.out.println("erro 1");
//e.printStackTrace();
}
}
public static void main(String[] args) {
new TCPServer();
}
class ConnectionService extends Thread {
private Socket socket;
private BufferedReader inputReader;
private PrintWriter outputWriter;
// private String username;
public ConnectionService(Socket socket) {
this.socket = socket;
System.out.println("Dados recebidos "+x);
try {
inputReader = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
outputWriter = new PrintWriter(socket.getOutputStream(), true);
} catch (IOException e) {
System.out.println("erro 2");
//System.out.println(e.getMessage());
}
}
@Override
public void run() {
while (true) {
try {
String receivedMessage = inputReader.readLine();
if(receivedMessage!=null){
System.out.println(receivedMessage+"\n");
//outputWriter.close();
// Aqui foi alterado !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
StringTokenizer stoken = new StringTokenizer(
receivedMessage);
String fargument = null;
if(stoken !=null){
fargument = stoken.nextToken();
}
if (fargument.equals("print2all")) {
this.sendToAnyone(stoken.nextToken());
}
} catch (IOException ex) {
//System.out.println("erro 3");
//Logger.getLogger(TCPServer.class.getName()).log(
// Level.SEVERE, null, ex);
} catch (NullPointerException e) {
//System.out.println("SEM LEITURA");
//System.out.println(e.getMessage());
} finally {
// Aqui foi alterado !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Aqui foi alterado !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Aqui foi alterado !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Aqui foi alterado !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Aqui foi alterado !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
outputWriter.close();
}
}
}
protected void sendMessage(String message) {
outputWriter.println(message);
}
private void sendToAnyone(String message) {
for (ConnectionService connection : connections) {
connection.sendMessage(message);
}
}
}
}[/code]
Então preciso reponder alguma coisa tipo “A” assim que alguém se conectar ao socket.