【问题标题】:Cannot read a file and get the outcome无法读取文件并获得结果
【发布时间】:2015-08-18 16:49:22
【问题描述】:

我想读取文件并首先匹配 2 个单词我连接一个套接字获取输入将它写入一个文件然后我想读取该文件并获取 2 个单词的匹配并做一些事后但似乎它没有不工作 所以这里是代码

#include<stdio.h>
#include<string.h>    //strlen
#include<sys/socket.h>
#include<arpa/inet.h> //inet_addr

int main(int argc , char *argv[])
{
    int socket_desc;
    struct sockaddr_in server;
    char *message, server_reply [2000];
    FILE *f; 
    //Create socket
    socket_desc = socket(AF_INET , SOCK_STREAM , 0);
    if (socket_desc == -1)
    {
        printf("Could not create socket");
    }

    server.sin_addr.s_addr = inet_addr("86.127.118.157");
    server.sin_family = AF_INET;
    server.sin_port = htons( 80 );

    //Connect to remote server
    if (connect(socket_desc , (struct sockaddr *)&server , sizeof(server)) < 0)
    {
        puts("connect error");
        return 1;
    }

    puts("Connected\n");

    //Send some data
    message = "GET / HTTP/1.1\r\n\r\n";
    if( send(socket_desc , message , strlen(message) , 0) < 0)
    {
        puts("Send failed");
        return 1;
    }
    puts("Data Send\n");

//Receive a reply from the server
    if( recv(socket_desc, server_reply , 2000 , 0) < 0)
    {
        puts("recv failed");
    }
    puts("Reply received\n");
    puts(server_reply);
    // Open and write the file
    f = fopen("date.txt", "w");   
    fprintf(f, server_reply);
     // read and match the words
    while (fgets (server_reply, 2500, f)) {
    if( strcmp(server_reply, "258"))
    {
    fputs(server_reply, f);
        }else{
    puts("I could not loccate the bug");
    }
    // file close
    fclose(f);
    return 0;
}
}

【问题讨论】:

    标签: c sockets fgets strcmp fputs


    【解决方案1】:

    问题是您假设您从套接字读取字符串。那是错的。你读了字节。没有隐含的零终止符,您必须自己完成所有操作。

    保存recv(2) 的返回值 - 这将告诉您读取了多少字节。

    循环读取 - 只要 一些 数据可用(或另一端关闭连接,或发生错误),recv(2) 将立即返回,因此您可能需要在读取之间拼接一条消息。

    【讨论】:

    • 这是我收到的。 回复收到的 HT。
    • 完全正确 - 看到那个不可打印的字符了吗?这意味着您正在触及从套接字读取的字节之外的内存。这是灾难的收据(充其量是崩溃)。
    • 真的发生了什么? :)
    • 真正发生的是您希望其他人修复您的代码。这不是我们在这里所做的。阅读套接字编程,弄清楚,提出明智的问题。你可以从这里开始beej.us/guide/bgnet/output/html/singlepage/bgnet.html
    猜你喜欢
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    相关资源
    最近更新 更多