我有一個關於服務器 - 客戶端數據傳輸的問題。數據在滿足簡單協議後由客戶端發送。但是我發現服務器端存在延遲。客戶端和服務器在具有帶SSD和8 GB RAM的i5內核的同一臺PC上進行測試。服務器端延遲
我如何測量延遲的方式是,在客戶端發送「發送」之後,雙方以毫秒爲單位寫入當前系統時間。數據本身就是客戶端發送的當前系統時間。服務器正在檢查它在服務器端延遲了多少。它從0ms開始,增加到90ms,穩定在40ms。我不知道這個延遲是否正常。
這裏是服務器的(多線程)的代碼:
....
while(!ScriptWillAcessHere){
inputLine = in.readLine();
//Greetings
if(i==0)
{
outputLine = SIMONSAYS.processInput(inputLine);
out.println(outputLine);
}
if(inputLine.equals("Sending")){
i = 1;
}
if(i>=1){ //Javascript will access this block
if(i==1){
StartTime = System.currentTimeMillis();
System.out.println(StartTime);
i++;
}
Differences = System.currentTimeMillis() - Double.parseDouble(inputLine);
saveSvr.write(Double.toString(Differences)+"\n");
...
//Checking elapsed time below:
}
}
這裏是在客戶端(單螺紋)的代碼:
....
if(Client.equals("Sending"))
{
while(bTimer)
{
ins++;
local_time = System.currentTimeMillis();
out.println(local_time);
if(ins >= 100000)
{
out.println("End of Message");
break;
}
}
}
謝謝,
OK,**上有Double.parseDouble性能問題()在while()循環。**我刪除此代碼,將其改爲saveSvr.write(inputLine)和他們不同的項目進行比較。他們是相同的,沒有延遲。 – user1098761 2012-02-06 23:24:02
如果這確實解決您的問題,請張貼它作爲一個答案,也可以肯定只要時間允許_accept_它。 – 2012-02-09 05:07:50