我有一個對象列表,我想發送它認爲TCP套接字連接。一種方法是獲取對象列表,並通過逗號和接收數據獲取將它們分開的所有值,另一方面獲取對象中的值和值。我可以發送一個對象列表,因爲它可以在WCF Web服務中完成。你能告訴我怎麼做?謝謝!如何通過套接字發送對象C#
我確實已經爲此創建了一個WCF服務,但改變了它,因爲它有一些無法解決的問題。所以我創建這個客戶端服務器應用程序。
此外,正在發送的數據每隔幾秒刷新一次,而且很多用戶都需要它。經過一番研究後,我發現這將是一個更好的選擇。
我有這個類與我是通過
public void SendMessage(string text)
{
Byte[] bytesSent = Encoding.UTF8.GetBytes(text);
SocketAsyncEventArgs writeEventArgs = new SocketAsyncEventArgs();
writeEventArgs.SetBuffer(bytesSent, 0, bytesSent.Length);
socket.SendAsync(writeEventArgs);
}
送我的消息,但我會出來,而第一個序列化對象,然後將其發送。所以我有一個流,需要作爲一個字節數組。
這是我必須接受的數據:
void ReceiveData()
{
try
{
int recv;
string stringData;
while (true)
{
recv = socket.Receive(data);
stringData = Encoding.ASCII.GetString(data, 0, recv);
if (stringData == "bye")
break;
ClientDataRecievedEventArgs sd = new ClientDataRecievedEventArgs(stringData);
DataRecieved(this, sd);
}
stringData = "bye";
byte[] message = Encoding.ASCII.GetBytes(stringData);
socket.Send(message);
socket.Close();
this.Dispose();
return;
}
catch (Exception)
{
socket.Close();
this.Dispose();
}
}
這是要我使用:
SoapFormatter formatter = new SoapFormatter();
foreach (Communication.Client Client in server.ClientList)
{
foreach (ObjectLibrary.Model.PIP p in Repository.GlobalRepository.PIPInformation)
{
formatter.Serialize(stream, p);
Client.SendMessage(stream);
}
}
如何初始化流? 我需要將數據作爲Stream將其反序列化爲Object。
所以我有對象列表我可以序列化整個列表?
你有沒有嘗試從你的任何代碼?如果是,那麼你可以具體說明你在通過tcp套接字發送對象列表時面臨的問題。 –
還檢查了這個線程[發送通過套接字序列化對象] [1] [1]:http://stackoverflow.com/q/1536169/164906 – ViktorZ
@Taufiq:如果你有很強的等待時間要求(例如,你正在創建一個網絡化的第一人稱射擊遊戲或其他基於實時物理的遊戲),或者試圖實現一個新的或現有的低級互聯網協議,只有這樣我才能繼續使用基於套接字的方法。否則,我會考慮更簡單和更高層次的技術,如WCF。它更加靈活(就代碼分解而言),並且可以讓您避免在大多數情況下考慮大部分細節。 –