⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.c

📁 linux环境下上下位机网络通讯服务器和客户端
💻 C
字号:
#include <netinet/in.h>    // for sockaddr_in
#include <sys/types.h>    // for socket
#include <sys/socket.h>    // for socket
#include <stdio.h>        // for printf
#include <stdlib.h>        // for exit
#include <string.h>        // for bzero
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

#define HELLO_WORLD_SERVER_PORT    6666 
#define LENGTH_OF_LISTEN_QUEUE  20
#define BUFFER_SIZE 1024
#define FILE_NAME_MAX_SIZE 512

int main(int argc, char **argv)
{
    	int client_socket;
    	int state;
       	struct sockaddr_in client_addr;
        char file_name[FILE_NAME_MAX_SIZE+1];
        char buffer[BUFFER_SIZE];
        int length = 0;
       	int write_length;
       	int i;
       	int len = sizeof(client_addr);
       	int result;
	      
	FILE *fp;
    	
	client_socket = socket(AF_INET, SOCK_STREAM, 0); 
    	bzero(&client_addr,sizeof(client_addr));
   	client_addr.sin_family = AF_INET;
//	client_addr.sin_addr.s_addr = htons(INADDR_ANY);
	client_addr.sin_port = 6666;
//	client_addr.sin_port = htons(HELLO_WORLD_SERVER_PORT);
   	client_addr.sin_addr.s_addr = inet_addr("192.168.0.22");
    	bzero(file_name, FILE_NAME_MAX_SIZE+1);
    		
    	   if(client_socket < 0)
   	 	{
       	 	printf("Create Socket Failed!\n");
        	exit(1);
    		}
	

	result = connect(client_socket, (struct sockaddr *)&client_addr, len);

	if (result == -1){
		perror("oops:client");
		exit(1);
	}	
//            state = bind(sockfd, (struct sockaddr*)&client_addr, sizeof(client_addr));
//    	    if(state<0)
//    		{
//        	printf("%d\n", state); 
//               printf("Client Bind Port Failed!\n"); 
//        	exit(1);
//    		}

    	printf("Please Input File Name On Server:\t");
    	scanf("%s", file_name);
    
    	bzero(buffer,BUFFER_SIZE);
    	strncpy(buffer, file_name, strlen(file_name)>BUFFER_SIZE?BUFFER_SIZE:strlen(file_name));
    	send(client_socket,buffer,BUFFER_SIZE,0);
	fp = fopen(file_name, "a+");

	if (NULL == &fp )
    	{
        printf("File:\t%s Can Not Open To Write\n", file_name);
        exit(1);
    	}
    

    	bzero(buffer,BUFFER_SIZE);
 
	while( length = recv(client_socket,buffer,BUFFER_SIZE,0))
    	{
        	if(length < 0)
        	{
            	printf("Recieve Data From Server %s Failed!\n", argv[1]);
            	break;
        	}
       
		write_length = fwrite(buffer,sizeof(char),length,fp);
        	if (write_length < length)
       		{
            	printf("File:\t%s Write Failed\n", file_name);
            	break;
        	}
          bzero(buffer,BUFFER_SIZE);    
   	}
    	printf("Recieve File:\t %s From Server[%s] Finished\n",file_name, argv[1]);
    
    	fclose(fp);
    	close(client_socket);
    	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -