소켓 연결을 통해 개체 목록을 보내려고합니다. 그리고 나는 WCF 서비스가 더 나은 옵션이 될 것이지만 나를위한 옵션이 아님을 안다.소켓 프로그래밍 예외 XML 문서 (170, 46)에 오류가 있습니다.
나는
private void tm_Tick(object sender, EventArgs e)
{
XmlSerializer formatter = new XmlSerializer(typeof(List<Objects.PIP>));
MemoryStream stream = new MemoryStream(1024);
formatter.Serialize(stream, Repository.GlobalRepository.PIPInformation);
byte[] bt = stream.ToArray();
foreach (Communication.Client Client in server.ClientList)
{
Client.SendMessage(bt);
}
stream.Flush();
}
public void SendMessage(Byte[] bytesSent)
{
SocketAsyncEventArgs writeEventArgs = new SocketAsyncEventArgs();
writeEventArgs.SetBuffer(bytesSent, 0, bytesSent.Length);
socket.SendAsync(writeEventArgs);
}
가 잘 작동하는 것 같다 데이터
를 보내려면이 코드를 사용하고 있습니다.데이터를 수신하려면 스레드에서이 코드를 사용하고 있습니다.
void ReceiveData()
{
try
{
while (true)
{
if (disposed == true)
return;
data = new byte[socket.ReceiveBufferSize];
var recv = socket.Receive(data);
XmlSerializer formatter = new XmlSerializer(typeof(List<Object.PIP>));
MemoryStream stream = new MemoryStream(data);
**Classes.TickerInformation.PIPList= (List<Object.PIP>)formatter.Deserialize(stream);**
}
socket.Close();
return;
}
catch (Exception ex)
{
}
}
예외가 발생했습니다. XML 문서 (170, 46)에 오류가 있습니다. 이 줄에 : Classes.TickerInformation.PIPList = (목록) formatter.Deserialize (스트림);
나는 모든 데이터가 수신되지 않고 있다고 가정합니다.
메시지 전의 메시지 길이를 다른 옵션으로 보내기 –
ur 응답에 많은 감사를드립니다. – thewayman
예, 절대적으로 ...하지만 후반에 메시지를 받으면 어떻게 시작했는지 알 수 없습니다. – Aliostad