Bonjour,
Je suis actuellement en stage et je developpe des appli pour pocket pc en c# avec .Net.( Je sais qu'il existe un forum pdafr mais personne n'est capable de me repondre).
Voila mon probleme:
J'essaie de faire une sorte de ping pour le pocket pc.
J'ai tout d'abord essayer avec des socket icmp mais sans succes:
en declarant la socket comme ceci:
m_Socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp);
j'obtiens ce message d'erreur:
An unhandled exception of type 'System.Net.Sockets.SocketException' occurred in System.dll
Additional information: The support for the specified socket type does not exist in this address family.
Apres avoir galere un bon moment et apres quelques heures de recherche, j'essaie avec une socket en tcp.
Tout se passe bien j'envoie un message mais je n'arrive pas a recuperer une reponse du server( j'ai essayer en synchrone et asynchrone).
Je ne connais pas bien les sockets donc je voudrais savoir si il est possible de recevoir une reponse a un envoie de message en tcp ou si quelqu'un sait pourquoi je recupere une erreur en icmp.
voici mon code(en constante modification pour essayer de recuperer une reponse du server que je ping):
this.label1.Text="";
bool Result = false;
int bytereceived=0;
byte[] buffer2 = new byte[1024];
Socket m_Socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPHostEntry loccomp=Dns.GetHostByName(Dns.GetHostName());
IPEndPoint locIP = new IPEndPoint(loccomp.AddressList[0], 11000);
try
{
IPHostEntry serverHE;
serverHE = Dns.GetHostByName(
this.textBox1.Text);
IPEndPoint localEP =
new IPEndPoint(serverHE.AddressList[0], 80);
EndPoint EndPointFrom = (localEP);
m_Socket.Connect(localEP);
Result = m_Socket.Connected;
if (m_Socket.Connected==true)
{
this.label1.Text+="connected to:"+localEP.ToString()+"\n";
}
else
{
this.label1.Text+="not connected to:"+localEP.ToString()+"\n";
return;
}
byte[] buffer=System.Text.Encoding.ASCII.GetBytes("test packet");
this.label1.Text+="Text sent:"+System.Text.Encoding.ASCII.GetString(buffer,0,buffer.Length);
this.label1.Text+="\tLength:"+buffer.Length+"\n";
int bytesent =m_Socket.Send(buffer,0,buffer.Length,SocketFlags.None);
this.label1.Text +="bytes sent:"+bytesent.ToString()+"\n";
if(bytesent==buffer.Length)
{
m_Socket.Shutdown(SocketShutdown.Send);
MessageBox.Show("send complete");
}
else
{
m_Socket.Shutdown(SocketShutdown.Send);
MessageBox.Show("send error");
return;
}
//bytereceived=m_Socket.ReceiveFrom(buffer2,256,0,ref EndPointFrom);
//bytereceived=m_Socket.Receive(buffer2);
bytereceived=m_Socket.Receive(buffer2,0,16,SocketFlags.None);
m_Socket.Shutdown(SocketShutdown.Receive);
this.label1.Text +="\nbytes received:"+bytereceived.ToString();
this.label1.Text+="\nText received:"+System.Text.Encoding.ASCII.GetString(buffer2,0,1024);
//m_Socket.Shutdown(SocketShutdown.Both);
this.label1.Text+="\nSocket closed";
m_Socket.Close();
Merci d'avance de l'aide que vous pouvez m'apporter.
(desole pour les accents mais je suis en Australie donc clavier qwerty)