2010-10-01 12 views
0

hein je veux poser une question à propos de la communication socket asynchrone sur C#. tout fonctionne bien pour le moment, à part la fermeture des clients. le serveur ne ferme pas immédiatement le socket de travail pour le client lorsqu'un client ferme sa connexion. il se ferme quelques temps plus tard. comment puis-je résoudre ce problème ??fermeture du socket client asynchrone?

Répondre

2

cochez ce lien http://msdn.microsoft.com/en-us/library/fx6588te.aspx#2 mon problème est que je ne peux pas garder la connexion ouverte après avoir reçu un message du client. Si je fais comme indiqué sur cet exemple, la connexion est fermée immédiatement après la réception du message. Si je ne ferme pas la connexion je ne peux recevoir qu'un message et rien de plus. Si vous avez une solution à ce lancer de cette façon.

Je l'ai eu!

Si quelqu'un d'autre a ce problème, il doit faire ce qui suit. Modifier ce code:

content = state.sb.ToString() 

à ceci:

content = state.sb.ToString().TrimEnd(New Char() {ChrW(13)}) 

alors vous devriez changer ceci:

If content.IndexOf("<EOF>") > -1 Then 

à ceci:

If content.IndexOf(New Char() {ChrW(13)}) > -1 Then 

cela va recevoir Saisissez (chrw (13)) comme la fin de la ligne.

puis ici:

Console.WriteLine("Read {0} bytes from socket. " + vbLf + " Data : {1}", content.Length, content) 
' Echo the data back to the client. 
Send(handler, content) 

vous devriez faire ceci:

Console.WriteLine("Read {0} bytes from socket. " + vbLf + " Data : {1}", content.Length, mid(content,1,content.length -2)) 
' Echo the data back to the client. 
'Send(handler, content) 
content = String.Empty 
state.sb.Clear() 
handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, New AsyncCallback(AddressOf ReadCallback), state) 

Et votre fait.