C ++ usa socket, ftp para la transferencia de archivos, realiza la función de cargar y descargar archivos

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.

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/u011718690/article/details/114387114
Recomendado
Clasificación