socket实现文件传输.docVIP

  • 3
  • 0
  • 约1.19万字
  • 约 10页
  • 2015-08-07 发布于湖北
  • 举报
socket实现文件传输.doc

服务器程序和客户端程序应当分别运行在两台计算机上。 在运行服务器端的计算机终端执行:./file_server 在运行客户端的计算终端上执行:./file_client ipaddr_server 然后根据提示输入要传输的服务器上的文件,该文件必须在服务器的当前运行目录中,否则会提示找不到文件。 直接上源码吧: [cpp] view plaincopy //////////////////////////////////////////////////////////////////////// // file_server.c -- socket文件传输服务器端示例代码 // ///////////////////////////////////////////////////////////////////// #includenetinet/in.h #includesys/types.h #includesys/socket.h #includestdio.h #includestdlib.h #includestring.h #define HELLO_WORLD_SERVER_PORT 6666 #define LENGTH_OF_LISTEN_QUEUE 20 #define BUFFER_SIZE 1024 #define FILE_NAME_MAX_SIZE 512 int main(int argc, char **argv) { // set sockets address information // 设置一个socket地址结构server_addr,代表服务器internet的地址和端口 struct sockaddr_in server_addr; bzero(server_addr, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htons(INADDR_ANY); server_addr.sin_port = htons(HELLO_WORLD_SERVER_PORT); // create a stream socket // 创建用于internet的流协议(TCP)socket,用server_socket代表服务器向客户端提供服务的接口 int server_socket = socket(PF_INET, SOCK_STREAM, 0); if (server_socket 0) { printf(Create Socket Failed!\n); exit(1); } // 把socket和socket地址结构绑定 if (bind(server_socket, (struct sockaddr*)server_addr, sizeof(server_addr))) { printf(Server Bind Port: %d Failed!\n, HELLO_WORLD_SERVER_PORT); exit(1); } // server_socket用于监听 if (listen(server_socket, LENGTH_OF_LISTEN_QUEUE)) { printf(Server Listen Failed!\n); exit(1); } // 服务器端一直运行用以持续为客户端提供服务 while(1) { // 定义客户端的socket地址结构client_addr,当收到来自客户端的请求后,调用accept // 接受此请求,同时将client端的地址和端口等信息写入client_addr中 struct sockaddr_in client_addr; socklen_t length = sizeof(client_addr);

文档评论(0)

1亿VIP精品文档

相关文档