2013-12-06 3 views
3

Ниже моя серверная программа,Проблемы, связанные с программой клиент-сервер TCP

import java.io.*; 
import java.net.*; 

class TwoWayServer 
{ 
    public static void main(String argv[]) throws Exception 
     { 
     ServerSocket server_socket = new ServerSocket(1234); 

     while(true) 
     { 
      Socket listen_socket = server_socket.accept(); 
      BufferedReader client_input = new BufferedReader(new InputStreamReader(listen_socket.getInputStream())); 
      DataOutputStream dos = new DataOutputStream(listen_socket.getOutputStream()); 
      String client_str = client_input.readLine(); 
      System.out.println(client_str); 
      String st=client_str.toUpperCase(); 
      dos.writeBytes(st); 
     } 
     } 
} 

И моя клиентская программа следующим образом,

import java.io.*; 
import java.net.*; 

class TwoWayClient 
{ 
public static void main(String argv[]) throws Exception 
{ 
    BufferedReader user_input = new BufferedReader(new InputStreamReader(System.in)); 
    Socket socket = new Socket("localhost", 1234); 
    DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); 
    BufferedReader server_response = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
    String client_str = user_input.readLine(); 
    dos.writeBytes(client_str + '\n'); 
    String response = server_response.readLine(); 
    System.out.println("FROM SERVER: " + response); 
    socket.close(); 
} 
} 

Вот, если я дам строку из клиентской затем сервер возвращает заглавную форму строки. Но проблема в том, что как только я предоставил строку, я не получаю никакого ответа от сервера. Просьба помочь.

ответ

3

Проблема заключается в сервере не писать байты на сервер с символом новой строки попробуйте заменить dos.writeBytes(st);

с

dos.writeBytes(st + "\n"); 
+0

Он работал человек, благодаря (Y) –

+0

Это не работает для меня. Правильный ответ от @ peter.petrov – Dario

+0

См. Отредактированный код, у меня возникла путаница в копировании, вставляющем код, так или иначе он понял это, не так ли? – insomniac

3

Вы можете попробовать эти изменения в свой код.

Сервер:

import java.io.*; 
import java.net.*; 

class TwoWayServer 
{ 
     public static void main(String argv[]) throws Exception 
     { 
       ServerSocket server_socket = new ServerSocket(1234); 

       while(true) 
       { 
         Socket listen_socket = server_socket.accept(); 
         BufferedReader client_input = new BufferedReader(new InputStreamReader(listen_socket.getInputStream())); 
         BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(listen_socket.getOutputStream())); 
         String client_str = client_input.readLine(); 
         System.out.println(client_str); 
         String st=client_str.toUpperCase(); 
         bw.write(st + '\n'); 
         bw.flush(); 
       } 
     } 
} 

Клиент:

import java.io.*; 
import java.net.*; 

class TwoWayClient 
{ 
     public static void main(String argv[]) throws Exception 
     { 
       BufferedReader user_input = new BufferedReader(new InputStreamReader(System.in)); 
       Socket socket = new Socket("localhost", 1234); 
       BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); 
       BufferedReader server_response = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
       String client_str = user_input.readLine(); 
       bw.write(client_str + '\n'); 
       bw.flush(); 
       String response = server_response.readLine(); 
       System.out.println("FROM SERVER: " + response); 
       socket.close(); 
     } 
} 
Смежные вопросы