Le code est au plus simple:
Creation:
mSock = socket(AF_INET,SOCK_DGRAM,0);
Envoi
1 2 3 4 5 6 7 8 9 10 11
|
size = sizeof(sockaddrin);
sockaddrin.sin_family = AF_INET;
sockaddrin.sin_port = htons(mPort);
sockaddrin.sin_addr.s_addr = (Ip[3] << 24) |
(Ip[2] << 16) |
(Ip[1] << 8 ) |
(Ip[0]);
memset(sockaddrin.sin_zero,0,8);
sendto((SOCKET)mSock,buff,(int)nbytes,0,(struct sockaddr*)&sockaddrin,sizeof(sockaddrin)); |
Par contre j'essaye la de récupérer le port de connexion cote client via un getsockname mais la structure renvoyée est toujours a 0...
1 2 3 4 5 6 7 8 9 10 11 12
| struct sockaddr_in sockaddrin;
int size = sizeof(sockaddrin);
if (getsockname((SOCKET)mSock,(struct sockaddr*)&sockaddrin,&size))
{
Family = sockaddrin.sin_family;
Port = ntohs(sockaddrin.sin_port);
Ipaddr[0] = sockaddrin.sin_addr.S_un.S_un_b.s_b1;
Ipaddr[1] = sockaddrin.sin_addr.S_un.S_un_b.s_b2;
Ipaddr[2] = sockaddrin.sin_addr.S_un.S_un_b.s_b3;
Ipaddr[3] = sockaddrin.sin_addr.S_un.S_un_b.s_b4;
} |
Pour mon probleme de changement d'IP/Port que voit le serveur alors que coté client rien n'a changé (a par la passerelle):
Si j'utilise une box adsl et ouvre ma socket client UDP pour taper sur mon serveur. Que se passe t il si jamais je reset la box? Coté socket client rien ne sera vu puisqu'on est justement en mode déconnecté, je me trompe ? par contre le serveur verra un changement d'IP et port. Est ce exact?
[EDIT]
Si on execute un sendto alors que la communication PPP n'est plus effective, est ce que le sendto renverra une erreur ?
Merci d'avance
Partager