C ++ utilise socket, ftp pour le transfert de fichiers, réalise la fonction de téléchargement et de téléchargement de fichiers
Les sockets doivent être divisés en côté serveur et côté client.
Terminal de service
1 Déclarer et initialiser une structure d'adresse de serveur (locale)
sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_addr.S_un.S_addr = INADDR_ANY;
server_addr.sin_port = htons(PORT);
// 2 Initialise le socket
WSADATA wsaData;
WORD socketVersion = MAKEWORD(2, 0);
if(WSAStartup(socketVersion, &wsaData) != 0)
{
printf("Init socket dll error!");
exit(1);
}
3 créer une prise
// 创建socket
SOCKET m_Socket = socket(AF_INET, SOCK_STREAM, 0);
if (SOCKET_ERROR == m_Socket)
{
printf("Create Socket Error!");
exit(1);
}
4 moniteur de liaison
//监听
if (SOCKET_ERROR == listen(m_Socket, 10))
{
printf("Server Listen Failed: %d", WSAGetLastError());
exit(1);
}
5 Lisez les informations pour déterminer si le client a besoin de lire le fichier ou de télécharger le fichier
char buffer[BUFFER_SIZE];
memset(buffer, 0, BUFFER_SIZE);
if (recv(m_New_Socket, buffer, BUFFER_SIZE, 0) < 0)
{
printf("Client Receive Data Failed!");
break;
}
std::cout<<buffer<<endl;
Client
1Initialisez le socket
// 初始化socket dll
WSADATA wsaData;
WORD socketVersion = MAKEWORD(2, 0);
if(WSAStartup(socketVersion, &wsaData) != 0)
{
printf("Init socket dll error!");
exit(1);
}
2 Créez un socket, spécifiez le serveur
//创建socket
SOCKET c_Socket = socket(AF_INET, SOCK_STREAM, 0);
if (SOCKET_ERROR == c_Socket)
{
printf("Create Socket Error!");
system("pause");
exit(1);
}
//指定服务端的地址
sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_addr.S_un.S_addr = inet_addr(SERVER_IP);
server_addr.sin_port = htons(PORT);
3 connectez-vous au serveur
if (SOCKET_ERROR == connect(c_Socket, (LPSOCKADDR)&server_addr, sizeof(server_addr)))
{
printf("Can Not Connect To Client IP!\n");
system("pause");
exit(1);
}
4 Demandez des instructions au serveur, que ce soit pour télécharger ou télécharger.
if(send(c_Socket, buffer, BUFFER_SIZE, 0) < 0)
{
printf("Send File Name Failed\n");
system("pause");
exit(1);
}
Ensuite, le processus de téléchargement et de téléchargement est similaire à la lecture et à l'écriture de fichiers locaux.
Les amis qui ont besoin du code source peuvent me contacter. D'autres amis sont également les bienvenus pour laisser un message, échanger et apprendre