Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 仅下载带套接字的文件_File_Sockets_Download_Client - Fatal编程技术网

File 仅下载带套接字的文件

File 仅下载带套接字的文件,file,sockets,download,client,File,Sockets,Download,Client,我想在iPhone上编写一个简单的客户端,只使用bsd套接字从http服务器下载文件。 我在网上搜索了一下,但没有找到任何有用的东西。你能给我一个方向吗 谢谢 Alex这取决于提供文件的服务器的性质。它可以是FTP、HTTP、网络文件共享,甚至像Gopher或scp这样的东西。在任何情况下,问题的基本性质都是相同的: 使用Connect将套接字连接到要联系的服务器 使用服务器理解的协议(FTP、HTTP等)传输请求 读取服务器返回的数据,并将其保存到本地文件中 来自 转换为C和文件处理留给读者作

我想在iPhone上编写一个简单的客户端,只使用bsd套接字从http服务器下载文件。 我在网上搜索了一下,但没有找到任何有用的东西。你能给我一个方向吗

谢谢


Alex

这取决于提供文件的服务器的性质。它可以是FTP、HTTP、网络文件共享,甚至像Gopher或scp这样的东西。在任何情况下,问题的基本性质都是相同的:

  • 使用
    Connect
    将套接字连接到要联系的服务器
  • 使用服务器理解的协议(FTP、HTTP等)传输请求
  • 读取服务器返回的数据,并将其保存到本地文件中
  • 来自

    转换为C和文件处理留给读者作为练习

    # Echo server program
    import socket
    
    HOST = ''                 # Symbolic name meaning all available interfaces
    PORT = 50007              # Arbitrary non-privileged port
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind((HOST, PORT))
    s.listen(1)
    conn, addr = s.accept()
    print 'Connected by', addr
    while 1:
        data = conn.recv(1024)
        if not data: break
        conn.send(data)
    conn.close()
    
    
    # Echo client program
    import socket
    
    HOST = 'daring.cwi.nl'    # The remote host
    PORT = 50007              # The same port as used by the server
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((HOST, PORT))
    s.send('Hello, world')
    data = s.recv(1024)
    s.close()
    print 'Received', repr(data)
    

    你为什么要这么做?只是为了学习BSD套接字吗?无论如何,使用BSD套接字编写FTP或HTTP客户端将非常容易,并且不难找到一个示例。你也想写一个服务器吗?不,只需要客户端。这是iphone应用程序工作的一部分。简单地说,高水平的可可课程是不够的,只是试图澄清。。。所以,你想在你的iPhone上编写一个Objective-C程序,它将进入你在网络上某个地方的常规(不是http或FTP)服务器。是的,我忘了提到——它是http。有没有代码片段/教程可以帮助我?我已经有了hello world客户端服务器的代码,但我希望看到客户端从http服务器下载文件。无论如何,谢谢你没有说服务器是HTTP服务器:P然后你必须用套接字发送一个HTTP请求,解析HTTP头响应,看看是否是多部分响应,以及编码和相当多的HTTP兼容内容。我认为最好的办法是查看wget的源代码,看看是如何实现的。