A. java 網路編程傳輸對象問題 求大神指導 謝謝
傳數據一般建議用json,像你這種之間吧對象傳過去的話不用再客戶端建user,你服務端需要用ObjectOutputStream對象去把你有數據的user序列話成流傳輸過去,客戶端直接用ObjectInputStream讀取這個流,對象就是Object,但是這個object就是你user的數據了,如果非要弄成user需要用反射把裡面的數據set到你客戶端的user中,這個沒法直接轉過去,不是一種class,所以只能反射再set
B. java如何實現基於TCP協議的socket傳輸
服務端監聽:ServerSocket
server=new
ServerSocket(port);//port:綁定的埠號
Socket
client=server.accept();//監聽埠,一旦取得連接則獲得客戶端的socket連接對象client
客戶端:
Socket
s=new
Socket(ip,port);//要連接的伺服器的ip以及埠號
如果正常連接上之後,socket的對象可以獲得InputStream和OutputStreame,然後就可以進行通信了
完成通信之後,執行socket對象的close()方法關閉連接,完成一次完整的socket連接
C. java 如何實現 http協議傳輸
Java 6 提供了一個輕量級的純 Java Http 伺服器的實現。下面是一個簡單的例子:
public static void main(String[] args) throws Exception{
HttpServerProvider httpServerProvider = HttpServerProvider.provider();
InetSocketAddress addr = new InetSocketAddress(7778);
HttpServer httpServer = httpServerProvider.createHttpServer(addr, 1);
httpServer.createContext("/myapp/", new MyHttpHandler());
httpServer.setExecutor(null);
httpServer.start();
System.out.println("started");
}
static class MyHttpHandler implements HttpHandler{
public void handle(HttpExchange httpExchange) throws IOException {
String response = "Hello world!";
httpExchange.sendResponseHeaders(200, response.length());
OutputStream out = httpExchange.getResponseBody();
out.write(response.getBytes());
out.close();
}
}
然後,在瀏覽器中訪問 http://localhost:7778/myapp/
D. JAVA里怎麼利用HTTP連接來進行數據傳輸
導入httpclient然後直接調用就可以了。或者resttemplet
E. 如何用java實現一個簡單網路通信過程
你說的我明白。如果真正使用alohal協議的時候,所有的機器都可以檢測網路電平變化的是吧?但是使用Java編寫模擬程序的話,我們並不能可能檢測電平的變換,只能通過一定的手段來模擬這個過程。如果你將一個包裹群發,這樣所有的機器都可以接受這個包,這樣就可以做到所有機器模擬檢測電平變化的這個要求。我認為這個是最有說服力的模擬方法了。
線程需要使用Thread類型,重寫裡面的run函數,調用start()啟動線程,具體可以搜索一把Thread,例子遍地都是。
UDP協議使用Socket類型,初始化的時候參數裡面綁定(或者初始化好以後直接調用bind綁定埠,一般輸出不用綁定,監聽的時候需要綁定)。調用裡面的getOutputStream得到輸入流。調用getInputStream得到輸入流。
OutputStream:輸出流,用於向網路中輸出數據。調用其中的write函數進行輸出,函數的參數就是輸出的byte數組。
InputStream: 輸入流,用於接受網路裡面的數據。調用其中的read可以得到輸入的包。
String:你要輸出的字元串,調用裡面的getBytes可以得到String的byte數組。
其它的應該用不到什麼了吧。
**********************************
1.發送字元串的話用byte[]就可以啊。用Socket類裡面的getOutputStream可以獲得一個發送數據的OutputStream類對象。這個類對象有一個函數write(byte[] b) 可以向網路寫byte[]。一個字元串可以通過String類中的getBytes() 轉化成byte[]。這樣總該明白了吧
2.說一下我的思路:開一個埠A發送UDP包(廣播給埠B),用於模擬發送,用一個線程(線程1)來跑。開埠B接受區域網內的包,用另外一個線程(線程2)來跑。在發送UDP包的時候,將變數mark置1,發送完置0。線程2如果接受到一個不是從本機發送的包,而且此時mark是1(說明本機和另外一個機器同時在發包),發生了沖突,表示線程1這次發送的包失敗。
F. 如何用java實現網路通信
你說的我明白。如果真正使用alohal協議的時候,所有的機器都可以檢測網路電平變化的是吧?但是使用Java編寫模擬程序的話,我們並不能可能檢測電平的變換,只能通過一定的手段來模擬這個過程。如果你將一個包裹群發,這樣所有的機器都可以接受這個包,這樣就可以做到所有機器模擬檢測電平變化的這個要求。我認為這個是最有說服力的模擬方法了。
線程需要使用Thread類型,重寫裡面的run函數,調用start()啟動線程,具體可以搜索一把Thread,例子遍地都是。
UDP協議使用Socket類型,初始化的時候參數裡面綁定(或者初始化好以後直接調用bind綁定埠,一般輸出不用綁定,監聽的時候需要綁定)。調用裡面的getOutputStream得到輸入流。調用getInputStream得到輸入流。
OutputStream:輸出流,用於向網路中輸出數據。調用其中的write函數進行輸出,函數的參數就是輸出的byte數組。
InputStream: 輸入流,用於接受網路裡面的數據。調用其中的read可以得到輸入的包。
String:你要輸出的字元串,調用裡面的getBytes可以得到String的byte數組。
其它的應該用不到什麼了吧。
**********************************
1.發送字元串的話用byte[]就可以啊。用Socket類裡面的getOutputStream可以獲得一個發送數據的OutputStream類對象。這個類對象有一個函數write(byte[] b) 可以向網路寫byte[]。一個字元串可以通過String類中的getBytes() 轉化成byte[]。這樣總該明白了吧
2.說一下我的思路:開一個埠A發送UDP包(廣播給埠B),用於模擬發送,用一個線程(線程1)來跑。開埠B接受區域網內的包,用另外一個線程(線程2)來跑。在發送UDP包的時候,將變數mark置1,發送完置0。線程2如果接受到一個不是從本機發送的包,而且此時mark是1(說明本機和另外一個機器同時在發包),發生了沖突,表示線程1這次發送的包失敗。