2009-11-22 37 views
6

Có ai có thể giúp tôi gỡ lỗi chương trình này không?Sự cố trong Chương trình TCP (Java)

Sau đây là mã máy chủ:

package networking; 

import java.io.IOException; 
import java.io.PrintWriter; 
import java.net.ServerSocket; 
import java.net.Socket; 
import java.util.Scanner; 

class TcpServer { 
    public static void main(String[] args) throws IOException { 
     ServerSocket serverSocket = new ServerSocket(5555); 
     while (true) { 
      Socket client = serverSocket.accept(); 
      Scanner reader = new Scanner(client.getInputStream()); 
      PrintWriter writer = new PrintWriter(client.getOutputStream()); 
      String inputString = reader.nextLine(); 
      System.out.println("Received from client : " + inputString); 
      writer.write(inputString.toUpperCase()); 
      client.close(); 
     } 
    } 
} 

Và đây là mã khách hàng:

package networking; 

import java.io.PrintWriter; 
import java.io.IOException; 
import java.net.Socket; 
import java.util.Scanner; 

class TcpClient { 
    public static void main(String[] args) throws IOException { 
     Socket client = new Socket("localhost", 5555); 
     PrintWriter writer = new PrintWriter(client.getOutputStream()); 
     Scanner reader=new Scanner(client.getInputStream()); 
     writer.println("oPen SOurCe RUleS !"); 
     System.out.println("Received from server : "+reader.nextLine()); 
     client.close(); 
    } 
} 

Vấn đề là khi tôi chạy chương trình này cả khách hàng & máy chủ đi vào trạng thái chờ đợi vô thời hạn. Bất cứ ai có thể cho tôi biết có gì sai với mã này?

Cảm ơn trước!

+1

Mã đúng không? . . . Việc nhập khẩu đường nối TcpClient bị sai lệch: không được nhập 'PrintWriter' và không được sử dụng' DataOutputStream'. . . . Dù sao tôi đề nghị không sử dụng PrintWriter vì nó KHÔNG ném ngoại lệ, bạn phải kiểm tra lỗi gọi là 'checkError'. IMHO chỉ tốt cho việc đăng nhập. –

+0

@Carlos: Cảm ơn bạn đã chỉ ra! Tôi đã sửa nó ngay bây giờ! :) – missingfaktor

+0

@Carlos: Tôi nên sử dụng gì thay cho PrintWriter? – missingfaktor

Trả lời

7

Bạn đã thử Flushing số PrintWriter?

Bạn đóng luồng nhưng bạn không bao giờ thông báo cho người viết rằng bạn sắp thực hiện.

+0

Cảm ơn bạn! Đã giải quyết được vấn đề! – missingfaktor

Các vấn đề liên quan