我有一个对象列表,我想发送它认为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。它更加灵活(就代码分解而言),并且可以让您避免在大多数情况下考虑大部分细节。 –