En C# lors de la simulation d'un LAN-Messenger, j'utilise l'adresse de bouclage juste pour tester le code actuel et je peux recevoir le premier message que j'envoie. Cependant, il n'y a pas de messages atteindre les socket.Is-il quelque chose à voir avec l'élimination d'un tampon de prise .please aider Ceci est la fonction de rappel lorsqu'une connexion est faite:Réception de messages via un socket
private void accepted(IAsyncResult iar)
{
Socket server = (Socket)iar.AsyncState;
Socket client = server.EndAccept(iar);
if (client.Connected)
{
try
{
client.BeginReceive(receive, 0, receive.Length, System.Net.Sockets.SocketFlags.None, new AsyncCallback(rec), client);
}
catch (ArgumentException)
{
MessageBox.Show("arguments incorrect in begin-receive call", "Error", MessageBoxButtons.OK);
}
catch (SocketException)
{
MessageBox.Show("error in accessing socket while receiving", "Error", MessageBoxButtons.OK);
}
catch (ObjectDisposedException)
{
MessageBox.Show("socket closed while receiving", "Error", MessageBoxButtons.OK);
}
catch (Exception)
{
MessageBox.Show("error while receiving", "Error", MessageBoxButtons.OK);
}
}
Ceci est la fonction de rappel lorsque la méthode begin-réception est exécuté :
void rec(IAsyncResult ar)
{
StringBuilder receivedData;
//String oldvalue;
Socket remote = (Socket)ar.AsyncState;
int recv = remote.EndReceive(ar);
receivedData = new StringBuilder(Encoding.ASCII.GetString(receive, 0, recv));
//MessageBox.Show(receivedData.ToString(), "received", MessageBoxButtons.OK);
StringBuilder sb = new StringBuilder(this.textBox1.Text);
sb.AppendLine(receivedData.ToString());
if (textBox1.InvokeRequired)
{
this.Invoke((MethodInvoker)delegate { this.textBox1.Text = sb.ToString(); });
}
remote.Close(5);
return;
}
A-t-il quelque chose à voir avec un type de données stringbuilder ou string pour assigner les données reçues à une variable.
Veuillez fournir le code pour l'envoi et la réception. –