C ++ usa socket, ftp para la transferencia de archivos, realiza la función de cargar y descargar archivos
Los sockets deben dividirse en lado del servidor y lado del cliente.
Terminal de servicio
1 Declare e inicialice una estructura de direcciones de servidor (local)
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 Inicializar el socket
WSADATA wsaData;
WORD socketVersion = MAKEWORD(2, 0);
if(WSAStartup(socketVersion, &wsaData) != 0)
{
printf("Init socket dll error!");
exit(1);
}
3 crear socket
// 创建socket
SOCKET m_Socket = socket(AF_INET, SOCK_STREAM, 0);
if (SOCKET_ERROR == m_Socket)
{
printf("Create Socket Error!");
exit(1);
}
4 monitor de encuadernación
//监听
if (SOCKET_ERROR == listen(m_Socket, 10))
{
printf("Server Listen Failed: %d", WSAGetLastError());
exit(1);
}
5 Lea la información para determinar si el cliente necesita leer el archivo o descargarlo
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;
Cliente
1Inicializar el zócalo
// 初始化socket dll
WSADATA wsaData;
WORD socketVersion = MAKEWORD(2, 0);
if(WSAStartup(socketVersion, &wsaData) != 0)
{
printf("Init socket dll error!");
exit(1);
}
2 Cree un socket, especifique el servidor
//创建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 conéctese al servidor
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 Solicite instrucciones del servidor, ya sea para cargar o descargar.
if(send(c_Socket, buffer, BUFFER_SIZE, 0) < 0)
{
printf("Send File Name Failed\n");
system("pause");
exit(1);
}
Entonces, el proceso de carga y descarga es similar a la lectura y escritura de archivos locales.
Los amigos que necesiten el código fuente pueden contactarme. Otros amigos también pueden dejar un mensaje, intercambiar y aprender.