2015-11-01 150 views
1

晚上好,我在這裏得到了這個服務器和客戶端。Java將數據從服務器發送回客戶端

的WebServer

import java.io.DataInputStream; 
import java.io.DataOutputStream; 
import java.io.IOException; 
import java.net.InetSocketAddress; 
import com.sun.net.httpserver.HttpExchange; 
import com.sun.net.httpserver.HttpHandler; 
import com.sun.net.httpserver.HttpServer; 

public class WebServer { 



public static void main(String[] args) throws Exception { 
    HttpServer http = HttpServer.create(new InetSocketAddress(8000), 0); 
    http.createContext("/test", new MyHandler()); 
    http.setExecutor(null); // creates a default executor 
    http.start(); 

    //NimServer nimserver = new NimServer(32778); 
    //nimserver.serve(); 

} 




static class MyHandler implements HttpHandler { 
    //AtomicInteger atomicInteger = new AtomicInteger(0); 
    //int theValue = atomicInteger.get(); 
    @Override 
    public void handle(final HttpExchange t) throws IOException { 
     final String response; 

     final String requestMethod = t.getRequestMethod(); 
     if ("GET".equals(requestMethod)) { 
      // response = String.format("Besuche: %d%n", atomicInteger.addAndGet(1)); 
     } 
     else if ("POST".equals(requestMethod)) { 
      // atomicInteger.set(0); 
      int clientno = new DataInputStream(t.getRequestBody()).readInt(); 
      System.out.println("Send from Client: " + clientno); 
      int newclientno = clientno + 1; 
      System.out.println("Increased by Server: " + newclientno); 
      new DataOutputStream(t.getResponseBody()).writeInt(newclientno); 

     } 
     else { 
      throw new IOException("Unsupported method"); 
     } 

     //t.sendResponseHeaders(200, response.length()); 
     //final OutputStream os = t.getResponseBody(); 
     //os.write(newclientno); 
     //os.close(); 

    } 
} 



} 

HttpClient的

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

public class HttpClient { 

public static int clientno = 0; 

public static void main(String[] args) throws Exception { 
//NimMessage clientnumber = new NimMessage(); 
//clientnumber.nachricht = "Client No: " + clientno; 

URL test = new URL("http://localhost:8000/test"); 
HttpURLConnection connect = (HttpURLConnection) test.openConnection(); 
connect.setDoOutput(true); 
connect.setDoInput(true); 
connect.setRequestMethod("POST"); 
new DataOutputStream(connect.getOutputStream()).writeInt(clientno);//send int out 
int newclientno = new DataInputStream(connect.getInputStream()).readInt(); 
System.out.println("Send from Server: " + newclientno); 
//BufferedReader in = new BufferedReader(new InputStreamReader(connect.getInputStream())); 
//String inputLine; 





//System.out.println(clientnumber.createJsonNachricht().toString()); 




//while ((inputLine = in.readLine()) != null) 
    // System.out.println(inputLine); 
//in.close(); 

} 


} 

我能夠從客戶端發送整數clinetno到服務器,並增加它在服務器上。但我不知道如何發送新的整數newclientno回到客戶端,並顯示在控制檯上。任何建議我做錯了什麼?

+0

你已經完成了。你的證據哪裏沒有用? – EJP

+0

我沒有得到System.out.println(「從服務器發送:」+ newclientno); 它站在HttpClient到我的控制檯,所以我認爲我缺少的東西 –

回答

0

好吧,我發現我的錯誤,我不得不在服務器添加一個頭來完成連接。我已經有過但沒有注意到它。

t.sendResponseHeaders(200, 0); 
相關問題