J'écris une application de transfert de fichiers dans VC++ (Server) en utilisant UDP. Je suis venu à savoir dans winsock2, il y a quelques fonctions qui sont utiles dans le transfert de fichiers. Quelqu'un peut-il m'aider. Je cherche aussi un exemple d'application de TransmitPackets de winsock2 mais pas de gettng. Aidez-moi, s'il vous plaît. Je vous remercie.Comment écrire la fonction TransmitPackets dans winsock2?
Répondre
http://www.mycplus.com/source-code/c-source-code/udp-sender-and-receiver/
http://www.winsocketdotnetworkprogramming.com/winsock2programming/winsock2advancedcode1e.html
http://msdn.microsoft.com/en-us/library/ms740566%28VS.85%29.aspx
Voici l'exemple d'application et le code source qui vous aidera.
édité:
Suite est la fonction de l'expéditeur qui prend la chaîne, la taille de la chaîne, IP et le port et d'envoyer des paquets sur UDP.
int sender(char cSendBuffer[], int iBufferSize, char cIP[], int iPort)
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2), &wsaData);
char cBroadcast = '1';
int iNumBytes = 0;
struct sockaddr_in their_addr;
struct hostent *he;
SOCKET sock;
sock = socket(AF_INET,SOCK_DGRAM,0);
if(setsockopt(sock,SOL_SOCKET,SO_BROADCAST,&cBroadcast,sizeof(cBroadcast)) < 0)
{
printf("\n ----------------------------------------- \n");
printf("Error in setting UDP option");
printf("\n ----------------------------------------- \n");
return 0;
}//End if
their_addr.sin_family = AF_INET;
their_addr.sin_port = htons(iPort);
//Target IP
their_addr.sin_addr.s_addr = inet_addr (cIP);
int iSentBytes =0;
//Send bytes through socket
iSentBytes = sendto(sock,cSendBuffer, iBufferSize,0,(sockaddr*)&their_addr,sizeof(their_addr));
if(iSentBytes < 0)
{
printf("\n ----------------------------------------- \n");
printf("Data Sending Error");
printf("\n ----------------------------------------- \n");
closesocket(sock);
return 0;
}//End if
else
{
printf("\n ----------------------------------------- \n");
printf("\n Data sent successfully to AT PORT:%d AND IP:%s \n",iPort,cIP);
printf("\n ----------------------------------------- \n");
}//End else
closesocket(sock);
WSACleanup();
return 1;
}//End Function For Sending Packet
Voici la fonction de réception de UDP.
int UDPReceiver(void)
{
char cRecievedBuffer[TRACK_BUFFER_SIZE];
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2), &wsaData);
SOCKET sock;
sock = socket(AF_INET,SOCK_DGRAM,0);
// my address information
struct sockaddr_in my_addr;
// connector's address information
struct sockaddr_in their_addr;
//sizeof (ANSI C function)
int len = sizeof(struct sockaddr_in);
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(MYPORT);
//Automatically fill with my IP
my_addr.sin_addr.s_addr = INADDR_ANY;
if (bind(sock,(sockaddr*)&my_addr, sizeof (my_addr)) < 0)
{
printf("\n ----------------------------------------- \n");
printf(" Error in BINDING ");
printf("\n ----------------------------------------- \n");
return 0;
}//End if
while(recvfrom(sock,cRecievedBuffer,TRACK_BUFFER_SIZE,0,(sockaddr *)&their_addr,&len))
{
//Your Decoder code
}
}
Merci pour la réponse Arman ... mais ici je dint obtenir la fonction que je voulais. Je cherche l'exemple d'application TransmitPackets. Je ne comprends pas comment utiliser cette fonction. Si possible, donnez plus d'informations. Merci encore. –
@Kishor, j'ai édité mon post, maintenant vérifiez-le, j'espère que cela aidera pour vous. – Siddiqui
vous n'avez pas utilisé la fonction TransmitPackets, donc une fois de plus l'exemple n'est pas pertinent. @Kishor - ne marquez pas les réponses comme des réponses si elles ne répondent pas à votre question. – Hut8
Les réponses aux liens uniquement sont déconseillées. Au moins, ajoutez un résumé dans votre réponse. – jgauffin
Merci pour guider Oded. Je suis comme tu l'as dit. –