簡體   English   中英

C編程,服務器套接字從客戶端調用文件時出錯

[英]C Programming, Errors with Server Socket Calling File From Client

您好StackOverflow訂戶,我在將服務器套接字數據讀入緩沖區以便從客戶端檢索文件時遇到一些問題。 我相信這是它的調用方式,我認為在嘗試調用文件之前,不會將整個字符串寫入變量! perror不返回此類文件或目錄!

IM對C編程來說是非常新的東西,並通過一些東西實現了它的字面意思。

所以我要問的是,是否有人可以幫助我弄清楚如何通過套接字將文件名發送給客戶端,並讓客戶端為我獲取文件!

如果它是一個簡單的修復程序,那將是很棒的,因為我是C語言的新手,並且我已經在該程序中做了3天了,所以不想重做整個代碼。...在此先感謝您的幫助! ! 這是我遇到問題的部分代碼!

                if (fgets(dataRead, sizeof(buffer), fp) !=NULL){
                    fputs(buffer, stdout);
                    perror("fputs");

                    perror("fgets");
                    printf("this is buffer : %s", buffer);




                FILE *dl = fopen(buffer, "r"); //THIS IS THE BUG!
                perror("dl");



                if (dl == NULL){
                    printf("failed to open file");

                }else{

                    while ( (c = fgetc(dl)) !=EOF){

                        fprintf(fp,"%c",c);
                        perror("fprintf");
                        fflush(fp);
                    }
                    }

您需要從“緩沖區”中刪除換行符,如下所示

if (fgets(dataRead, sizeof(buffer), fp) !=NULL){
                    strtok(buffer, "\n"); //this removes the newline
                    fputs(buffer, stdout);
                    perror("fputs");

我希望這可以幫助你

帶“ r”的fopen表示以只讀模式打開文件,這期望文件存在於指定路徑中。

您確定緩沖區完全包含要打開的文件嗎? 並且該文件位於相對於您的可執行文件的給定路徑中。

FILE *dl = fopen(buffer, "r");

提示在打印變量時幾乎總是使用引號,這將有助於識別像這樣的尾隨空格。

printf("this is buffer : '%s' ", buffer);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM