Ola a todos,
Bom estou com algum problema num codigo basico de Socket e não sei o porque ele não esta funcionando…
Se alguem conseguir achar o erro pra mim eu agradeceria muito
Server
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package testesocket;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author Gabriel
*/
public class TesteServer {
List<Socket> list = new ArrayList<Socket>();
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("SERVER");
new TesteServer();
}
public TesteServer() {
ServerSocket server = null;
try{
server = new ServerSocket(7000);
for(;;){
Socket socket = server.accept();
System.out.println("ACCEPT");
list.add(socket);
new Thread(new SocketThread(socket)).start();
}
} catch(Exception ex){
System.err.println(ex.getMessage());
ex.printStackTrace();
} finally {
try {
if(server != null)
server.close();
} catch (Exception ex) {
System.err.println(ex.getMessage());
ex.printStackTrace();
}
}
}
private void tellEveryone(String message){
for (Socket socket : list) {
try{
//DataOutputStream output = new DataOutputStream(socket.getOutputStream());
PrintWriter output = new PrintWriter(socket.getOutputStream());
output.write(message);
} catch(Exception ex){
System.err.println(ex.getMessage());
ex.printStackTrace();
}
}
}
private class SocketThread implements Runnable{
//DataInputStream input;
BufferedReader input;
public SocketThread(Socket socket) {
try {
//this.input = new DataInputStream(socket.getInputStream());
this.input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (Exception ex){
System.err.println(ex.getMessage());
ex.printStackTrace();
}
}
@Override
public void run() {
try {
String message;
System.out.println("wait");
while((message = input.readLine()) != null){
System.out.println(message);
tellEveryone(message);
}
} catch (Exception ex){
System.err.println(ex.getMessage());
ex.printStackTrace();
}
}
}
}
Client
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package testesocket;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
/**
*
* @author Gabriel
*/
public class TesteSocket {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("SOCKET");
new TesteSocket();
}
public TesteSocket() {
Socket socket = null;
//DataOutputStream output = null;
PrintWriter output = null;
Scanner scan = new Scanner(System.in);
try{
socket = new Socket("localhost", 7000);
new Thread(new Listen(socket)).start();
//output = new DataOutputStream(socket.getOutputStream());
output = new PrintWriter(socket.getOutputStream());
for(;;){
System.out.print("Digita: ");
output.write(scan.next());
}
} catch(Exception ex){
System.err.println(ex.getMessage());
ex.printStackTrace();
} finally {
try {
if(socket != null)
socket.close();
} catch (Exception ex) {
System.err.println(ex.getMessage());
ex.printStackTrace();
}
}
}
private class Listen implements Runnable{
//DataInputStream input;
BufferedReader input;
public Listen(Socket socket) {
try {
//this.input = new DataInputStream(socket.getInputStream());
this.input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (Exception ex){
System.err.println(ex.getMessage());
ex.printStackTrace();
}
}
@Override
public void run() {
try {
String message;
System.out.println("wait");
while((message = input.readLine()) != null){
System.out.println(message);
}
} catch (Exception ex){
System.err.println(ex.getMessage());
ex.printStackTrace();
}
}
}
}
Tanto o server quanto o client param no while logo apos o “wait” e eu não sei o porque