我在使用Java中的套接字時遇到了一些問題。我正在創建一個不斷需要將數據發送到服務器的應用程序。數據通過客戶端的套接字發送。我正在使用以下代碼:如何在Java中使用套接字
serverAddr = InetAddress.getByName(ipAddress);
while(send)
{
soc=new Socket(serverAddr,8210);
outStream=soc.getOutputStream();
outStream.write(data);
outStream.close();
}
上述代碼工作正常,沒有問題。 這裏我在每個循環中創建一個Socket
的新對象,我認爲這不是一個好的實現方法。如何使用一個Socket
將數據發送到服務器? (我不希望創建在每一個循環的新對象)
這裏是我寫在C#服務器的代碼:
while (true)
{
Socket s = listener.AcceptSocket();
NetworkStream ns = new NetworkStream(s);
int d;
while ((d = ns.ReadByte()) >= 0)
{
//Process data here
}
s.Close();
}
而且我需要在服務器端做什麼修改?
感謝
在單個流上發送多條消息,並在多個流上發送1條消息之間存在一些根本區別;特別是您的「過程數據在這裏」需要能夠正確區分不同的消息。你可能已經有這個覆蓋了...我只是提到它是徹底的 – 2011-03-31 07:12:35
@Marc,在這種情況下消息是分開的,因爲他爲每個消息打開一個新的套接字。非常低效,但它確實分解了郵件;) – 2011-03-31 07:15:15
@Peter - exactly;如果他切換到一個套接字,則會發生變化。根據消息格式的不同,*可能會很好,或者*可能需要調整 - 例如每條消息的長度前綴 – 2011-03-31 07:18:36