【问题标题】:How to deal with the data received from python program如何处理从python程序接收到的数据
【发布时间】:2020-12-30 17:21:43
【问题描述】:

我编写了一个从 python 服务器接收 PDF 文件的 C 客户端。我觉得一开始很容易。但是,这里有一些问题。接收和存储的 PDF 文件很奇怪。以下是程序的一些关键部分(省略了一些琐碎的细节)。

server.py

fp = open(filename,'rb')
content = str(fp.read())
connectionSocket.send(content.encode())
fp.close()

client.c

int main(void){
    char content[filesize];    //have already gotten the content size
    recvContent(sock, content, filesize);  //recvContent is a function that receive given length data from socket
    FILE* fp;
    fp = fopen(filename,"wb");    // already get the file name
    int j = 0;
    while(j <= filesize){
        fputc(content[j],fp);
        j++;
    }
    fclose(fp);
}
int recvContent(SOCKET sock, void * content, int size){
    int recvLen=0;
    int count=0;
    void * startb = content;
    while (count < size) {
        recvLen = recv(sock, (char *)startb,1024, 0);
        startb += recvLen;
        count  += recvLen;
        if (recvLen == SOCKET_ERROR) 
            closeSocket(sock);
    } 
    return count; 
}

当我打开收到的 PDF 文件时,它说它已损坏。当我用笔记本程序打开它时。部分内容如下。

%PDF-1.7\n%\xe2\xe3\xcf\xd3\n1 0 obj\n<</Type/XObject/Subtype/Image/Width 75/Height 75/Length 273/ColorSpace[/Indexed/DeviceRGB 1(\x00\x00\x00\xff\xff\xff)].....(omitted here ).......1]/CropBox[0 0 609.44 394.01]/Resources<</XObject<</Xi0 1 0 R/Xi4 25 0 R/Xi5 26 0 R>>/Font<</FXF20 14 0 R/FXF21 15 0 R/Xi1 2 0 R/Xi2 3 0 R/Xi3 4 0 \n%iText-5.5.10\nstartxref\n35132\n%%EOF\n

感谢您的帮助。

【问题讨论】:

  • 请提供完整的工作示例,否则没有人可以帮助您。

标签: python c sockets


【解决方案1】:

您已在服务器端对内容进行了编码,因此您收到的内容已被编码。您需要在保存到文件之前对其进行解码。

【讨论】:

  • "\\xab"替换为"\xab",将"\\n"替换为"\r\n"等等。
猜你喜欢
  • 1970-01-01
  • 2011-05-22
  • 1970-01-01
  • 2014-07-04
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
  • 1970-01-01
  • 2020-04-07
相关资源
最近更新 更多