Hej, jag har lite problem med en n-verk applikation som jag håller på att skriva.
Det är så att jag har skrivit en Asyncron server för att ta emot serializerade object från klienten. Det funkar bra tills att objektet blir med än 255 bytes stor.
Ta emot metoden:
private void ReceiveCallback(IAsyncResult result)
{
AsyncConnectionInfo connection = (AsyncConnectionInfo)result.AsyncState;
try
{
int num_read = connection.socket.EndReceive(result);
OutPut(num_read);
if (0 != num_read)
{
connection.socket.BeginReceive(connection.buffer, 0, 255, SocketFlags.None, new AsyncCallback(ReceiveCallback), connection);
foreach (byte b in connection.buffer)
{
data.Add(b);
}
}
else
{
connectedSockets.Remove(connection);
}
if (!connection.socket.Poll(0, SelectMode.SelectRead))
{
MessageItem mi;
BinaryFormatter b = new BinaryFormatter();
MemoryStream memstrm = new MemoryStream((byte[])data.ToArray(typeof(byte)));
mi = (MessageItem)b.Deserialize(memstrm);
memstrm.Close();
OutPut(mi.mekk);
data = new ArrayList();
}
}
catch (SocketException socketException)
{
//WSAECONNRESET, the other side closed impolitely
if (socketException.ErrorCode == 10054)
{
closeSocket(connection);
}
}
catch (ObjectDisposedException)
{
// The socket was closed out from under me
closeSocket(connection);
}
}
Felet:
The input stream is not a valid binary format. The starting contents (in bytes) are: 73 68 6A 74 69 6F 68 73-74 73 6E 68 67 6C 6B 6E...
Loggen:
System.Net.Sockets Verbose: 0 : [3032] Exiting Socket#43495525::BeginAccept() -> AcceptOverlappedAsyncResult#5773521
System.Net.Sockets Verbose: 0 : [3032] Data from Socket#6044116::PostCompletion
System.Net.Sockets Verbose: 0 : [3032] 00000000 : 00 01 00 00 00 FF FF FF-FF 01 00 00 00 00 00 00 : ................
System.Net.Sockets Verbose: 0 : [3032] 00000010 : 00 0C 02 00 00 00 3F 47-4F 2E 43 6C 61 73 73 2C : ......?GO.Class,
System.Net.Sockets Verbose: 0 : [3032] 00000020 : 20 56 65 72 73 69 6F 6E-3D 31 2E 30 2E 30 2E 30 : Version=1.0.0.0
System.Net.Sockets Verbose: 0 : [3032] 00000030 : 2C 20 43 75 6C 74 75 72-65 3D 6E 65 75 74 72 61 : , Culture=neutra
System.Net.Sockets Verbose: 0 : [3032] 00000040 : 6C 2C 20 50 75 62 6C 69-63 4B 65 79 54 6F 6B 65 : l, PublicKeyToke
System.Net.Sockets Verbose: 0 : [3032] 00000050 : 6E 3D 6E 75 6C 6C 05 01-00 00 00 14 47 4F 2E 43 : n=null......GO.C
System.Net.Sockets Verbose: 0 : [3032] 00000060 : 6C 61 73 73 2E 4D 65 73-73 61 67 65 49 74 65 6D : lass.MessageItem
System.Net.Sockets Verbose: 0 : [3032] 00000070 : 01 00 00 00 04 6D 65 6B-6B 01 02 00 00 00 06 03 : .....mekk.......
System.Net.Sockets Verbose: 0 : [3032] 00000080 : 00 00 00 C0 01 68 67 66-68 66 67 68 66 68 67 6A : .....hgfhfghfhgj
System.Net.Sockets Verbose: 0 : [3032] 00000090 : 68 6A 75 6A 6B 66 6D 6E-68 6A 6D 6E 68 6A 68 64 : hjujkfmnhjmnhjhd
System.Net.Sockets Verbose: 0 : [3032] 000000A0 : 67 6A 67 68 6A 67 6C 6B-6E 64 66 68 6F 67 69 73 : gjghjglkndfhogis
System.Net.Sockets Verbose: 0 : [3032] 000000B0 : 6E 69 67 6F 6E 68 67 70-69 73 66 68 6A 6E 69 67 : nigonhgpisfhjnig
System.Net.Sockets Verbose: 0 : [3032] 000000C0 : 66 73 68 6E 70 6F 73 6E-69 68 67 6F 6E 68 69 73 : fshnposnihgonhis
System.Net.Sockets Verbose: 0 : [3032] 000000D0 : 67 6E 68 67 6F 69 68 6E-73 62 6E 76 70 62 C3 A4 : gnhgoihnsbnvpb..
System.Net.Sockets Verbose: 0 : [3032] 000000E0 : 6A 6F 70 6A 68 69 74 61-6E 68 6A 69 6F 61 73 6E : jopjhitanhjioasn
System.Net.Sockets Verbose: 0 : [3032] 000000F0 : 68 69 67 6F 68 69 73 68-6B 6C 67 66 68 69 70 : higohishklgfhip
System.Net.Sockets Verbose: 0 : [3032] Socket#6044116::EndReceive(OverlappedAsyncResult#59817589)
System.Net.Sockets Verbose: 0 : [3032] Exiting Socket#6044116::EndReceive() -> 255#255
System.Net.Sockets Verbose: 0 : [3032] Socket#6044116::BeginReceive()
System.Net.Sockets Verbose: 0 : [3032] Exiting Socket#6044116::BeginReceive() -> OverlappedAsyncResult#54135081
System.Net.Sockets Verbose: 0 : [3032] Data from Socket#6044116::PostCompletion
System.Net.Sockets Verbose: 0 : [3032] 00000000 : 73 68 6A 74 69 6F 68 73-74 73 6E 68 67 6C 6B 6E : shjtiohstsnhglkn
System.Net.Sockets Verbose: 0 : [3032] 00000010 : 68 6B 67 6C 73 6E 68 70-74 73 69 68 6A 69 74 73 : hkglsnhptsihjits
System.Net.Sockets Verbose: 0 : [3032] 00000020 : 6E 68 6F 67 6B 6C 68 67-6B 73 67 68 6E 70 74 69 : nhogklhgksghnpti
System.Net.Sockets Verbose: 0 : [3032] 00000030 : 6E 67 66 64 67 66 64 67-64 66 67 66 64 67 64 66 : ngfdgfdgdfgfdgdf
System.Net.Sockets Verbose: 0 : [3032] 00000040 : 67 66 64 67 68 74 0B : gfdght.
System.Net.Sockets Verbose: 0 : [3032] Socket#6044116::EndReceive(OverlappedAsyncResult#54135081)
System.Net.Sockets Verbose: 0 : [3032] Exiting Socket#6044116::EndReceive() -> 71#71
Tack på förhand!
Hoppas på svar :bire