the*_*man 1 c# sockets tcp object
我有一个对象列表,我想发送它认为TCP套接字连接.一种方法是获取对象列表并获取所有值,通过逗号和接收数据将它们分开,另一端和对象中的值.我是否可以发送对象列表,因为它可以在WCF Web服务中完成.你能告诉我怎么样?谢谢!
我之前已经为此创建了一个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);
}
Run Code Online (Sandbox Code Playgroud)
但我宁愿首先序列化对象然后发送它.所以我有一个流和需要作为字节数组.
这是我必须接收的数据:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我想要的:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
如何初始化流?我需要将数据作为Stream来将其反序列化为Object.
所以我有对象列表我可以序列化整个列表吗?
您必须"序列化"对象,并在另一侧反序列化它们.有关该信息,请参阅http://msdn.microsoft.com/en-us/library/system.serializableattribute.aspx.
但是,您必须要小心,如果在发送数据时连接发生了某些事情,您可能没有足够的数据来完全重新创建对象,并且您的程序可能会在某些意外的位置失败.只有在收到所有内容时才创建对象.
归档时间: |
|
查看次数: |
10639 次 |
最近记录: |