2014-02-26 40 views
0

我想在Java套接字程序中實現多線程。到目前爲止,我已經嘗試過單個連接並且它可以工作,但由於是單個連接,所以過程很慢。我應該如何繼續以使多線程處理速度更快?Java套接字程序中的多線程

import java.io.BufferedInputStream; 
import java.io.BufferedWriter; 
import java.io.OutputStreamWriter; 
import java.io.PrintWriter; 
import java.net.Socket; 

public class MRPosting { 
    public static String MRPost(String strRequestMessage, String strIP, 
      int intPort) throws Exception { 
     String strResponseMessage = ""; 
     try{ 
     Socket socket = null; 
     socket = new Socket(strIP, intPort); 
     BufferedInputStream bin = new BufferedInputStream(
       socket.getInputStream()); 

     PrintWriter pw1 = new PrintWriter(new BufferedWriter(
       new OutputStreamWriter(socket.getOutputStream())), true); 
     pw1.println(strRequestMessage); 
     pw1.flush(); 

     strResponseMessage = readInputStream(bin); 
     socket.close(); 
     socket = null; 
     }catch(Exception e){ 
      strResponseMessage = "ERROR:MRPORT_JAVA:"+e.toString(); 
      return strResponseMessage; 
     } 
     return strResponseMessage; 

    } 

    public static String readInputStream(BufferedInputStream in) 
     throws Exception { 
     String read_msg = ""; 

     int i = in.read(); 
     if (i == -1) { 
      return "-1"; 
     } 
     read_msg = read_msg + (char) i; 
     int available = in.available(); 
     if (available > 0) { 
      byte[] Data = new byte[available]; 
      in.read(Data); 
      read_msg = read_msg + new String(Data); 
     } 
     return read_msg; 
    } 

} 
+1

到目前爲止,您尚未顯示您嘗試過的線程 – beny23

回答

1

多線程!=增加速度。

你應該閱讀(谷歌)了很多關於客戶端/服務器套接字編程,因爲你甚至還沒有接近到一個正常運作的程序。 你需要一個ServerSocket監聽的服務器上,並從客戶接受連接,每個連接你需要打開通過IO Socket連接並交換信息流。

0

你不會讓這個程序有任何與多線程更快,除非有多個連接,但如果有,只是把這東西從具有多個插座多線程,流等有什麼本質上的非線程因爲您不使用任何靜態或實例變量,所以在這裏很安全。

NB擺脫可用()測試。它不會做你的想法。看到Javadoc。