现在这是一个请求,因为我无法找到 任何简单直接的例子。
问题:我想从服务器端向客户端发送文件。
当服务器已经启动并侦听端口并且客户端请求文件时(文件的名称被接受为具有服务器IP地址的参数,例如127.0.0.1和端口号) 然后转移过程开始,直到文件被复制。
也有人可以合并我如何测量服务器端的平均传输速度?
BTW:我正在运行Linux x86 干杯, echo9
答案 0 :(得分:4)
检查 Beej's Guide to Network Programming 。这里有很多例子展示了如何使用套接字实现客户端/服务器架构并在它们之间发送数据。
修改强>:
检查this tutorial中的项目8和9,以获取客户端/服务器上的完整示例。请注意,在第8项上,服务器向客户端发送char*
:
send(fd2,"Welcome to my server.\n",22,0); /* send to the client welcome message */
在这种情况下,它是"Welcome to my server.\n"
字符串,下一个参数是您要发送的字符串的大小。
当您需要从文件发送数据时,它是一回事:首先,您需要从文件中读取数据并将其存储在通过 malloc()<手动分配的char* buffer;
中/ em>的。
这样的事情:
char* buffer;
buffer = (char*) malloc(1024); // let's say your file has 1KB of data
/* insert here the code to read data from the file and populate buffer with it */
send(fd2, buffer, 1024,0);
答案 1 :(得分:2)
这是一个简单的协议:
CLIENT SERVER
socket(), bind(), listen()
socket(), connect()
accept()
send("GET filename\n")
recv(buffer)
inspect buffer, parse filename (stop at space or \n),
open() file.
sendfile(file, socket)
close(socket)
close(file)
recv(socket)
close()
此协议的优点是能够将您的Web浏览器用作客户端,并将您的Web服务器用作主机,假设它们各自支持HTTP/0.9。
答案 2 :(得分:0)
您可能需要考虑使用sendfile(2)。