2013-10-30 2 views
0

소켓이 서버로 또는 클라이언트로 메시지를 보내지 않습니다. ... IDK 왜 서버에 연결할 수 있습니까?Java 소켓이 클라이언트 및 서버에 메시지를 보내지 않습니다.

나는 이것을 고치려고했지만 나는 기울이지 않았다. 가능한 모든 방법이 나를 위해 일하지 않았다. 여기에있는 사람들 중 일부가 나를 도울 수 있기를 바랍니다.

읽어 주셔서 감사합니다 .. 여기에 서버입니다 : 두 번 읽는 방법

  try { 
       if(br.readLine() != null){ 
        String test = br.readLine(); 
        System.out.println("Received MSG: " + test); 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

주의 사항 :

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]); 
} 

} 
+0

동일한 소켓에서 다중 스트림/판독기/기록기를 사용하지 마십시오. 소켓 수명 동안 동일한 쌍을 사용하십시오. 그렇지 않으면 버퍼링 된 것들은 버퍼링되지 않은 것들로부터 데이터를 훔칩니다. – EJP

답변

2

아마 문제가 함께 할 수있는 뭔가가. 첫 번째 br.readLine()String 변수에 저장 한 다음 다시 읽는 대신 해당 변수를 사용하십시오.

관련 문제