Reputation: 1
My Socket isn't sending the messages to the server or back to the client..., IDK Why but I can connect to the server....
I tried to fix this but I cant, Every possible way didn't work for me. So I hope some people on here may can help me.
Thanks for reading.., Here is the Server:
package test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Timer;
import java.util.TimerTask;
import ADG.luxemita.LuxEmita;
public class serverHostTest{
static Socket socket;
static DataInputStream in;
static ServerSocket serverSocket;
//static InputStreamReader isr;
static BufferedReader br;
//static BufferedReader stdBr;
//static InputStream is;
static DataOutputStream out;
//static OutputStreamWriter osw;
static BufferedWriter bw;
//static OutputStream os;
static PrintWriter stdOut;
public serverHostTest(String[] args) throws Exception{
int port = Integer.parseInt(args[2]);
LuxEmita.luxLogger.logInfo("Starting Server....");
serverSocket = new ServerSocket(port);
LuxEmita.luxLogger.logInfo("Started Server....");
socket = serverSocket.accept();
LuxEmita.luxLogger.logInfo("Intialized Socket....");
out = new DataOutputStream(socket.getOutputStream());
out.writeUTF("Server Started Successfully!, Some more data...");
//SetupEvent.initInstance();
/*out = new DataOutputStream(socket.getOutputStream());
os = socket.getOutputStream();
osw = new OutputStreamWriter(os);
bw = new BufferedWriter(osw);
stdOut = new PrintWriter(socket.getOutputStream(), true);
in = new DataInputStream(socket.getInputStream());
is = socket.getInputStream();
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
stdBr = new BufferedReader(new InputStreamReader(System.in));
in2 = new BufferedReader(new InputStreamReader(socket.getInputStream()));*/
stdOut = new PrintWriter(socket.getOutputStream(), true);
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
if(serverHostTest.serverSocket != null && socket != null){
new Timer().schedule(new TimerTask() {
public void run(){
try {
if(br.readLine() != null){
String test = br.readLine();
System.out.println("Received MSG: " + test);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}, 1, 1);
}
}
public static void say(String[] args) throws Exception {
stdOut.write(args[2]);
stdOut.flush();
System.out.println("Message sent to the client is " + args[2]);
}
}
Upvotes: 0
Views: 1079
Reputation: 11947
Perhaps your issue has something to do with:
try {
if(br.readLine() != null){
String test = br.readLine();
System.out.println("Received MSG: " + test);
}
} catch (IOException e) {
e.printStackTrace();
}
Notice how you are reading twice. Store the first br.readLine()
in a String
variable and then use that variable instead of reading again.
Upvotes: 2