2010-10-05 69 views
5

我見過很多通過Java套接字發送序列化數據的例子,但我只想發送一些簡單的整數和一個字符串。而且,問題是我試圖將這些通信傳遞給用C編寫的二進制文件。如何通過Java套接字以二進制形式發送數據?

因此,底線:我怎樣才能通過Java中的套接字發送一些字節?

+0

你確定C程序和Java程序以同樣的方式處理二進制字符串和字符串嗎?如果你不是,請將它們作爲普通的舊文本發送。如果您沒有控制讀取套接字的C程序,那麼您將別無選擇,只能以C程序所需的任何格式發送數據。 – 2010-10-05 16:16:30

回答

4

我真的不建議直接使用Java套接字庫。我發現Netty(來自JBoss)很容易實現,而且非常強大。 Netty ChannelBuffer類帶有大量用於編寫不同數據類型的選項,當然如果您願意,可以編寫您自己的編碼器和解碼器,以便在流中編寫POJO。

本頁是一個非常好的入門者 - 我能夠在30分鐘內使用自定義編碼器和解碼器製作一個相當複雜的客戶端/服務器:http://docs.jboss.org/netty/3.2/guide/html/start.html

如果您確實想使用Java套接字。插座輸出流可以被包裹在一個DataOutputStream類,它允許你寫了許多不同的數據類型爲好,例如:

new DataOutputStream(socket.getOutputStream()).writeInt(5); 

我希望這是有益的。

+0

DataOutputStream似乎工作得很好。我的工作結束了,明天我會回來的。 – evilpenguin 2010-10-05 15:42:29

+0

請注意,本教程的鏈接適用於Netty的JBoss版本。這與教程鏈接的netty.io下載的API不匹配。改爲使用http://netty.io/wiki/user-guide-for-4.x.html – Speakjava 2017-09-09 10:17:40