1、客户端的代码:(先运行服务器端 ,并且新建一个1.txt文件:Hello world!)#include<stdio.h&爿讥旌护gt;#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<string.h>#include<unistd.h>#include<arpa/inet.h>int main(){ struct sockaddr_in servAddr; memset(&servAddr, 0, sizeof(servAddr)); servAddr.sin_family = PF_INET; servAddr.sin_port = htons(8888); servAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); //socket int cliFd = socket(PF_INET, SOCK_STREAM, 0); if(-1 == cliFd) { perror("socket error!"); return -1; } //connect int ret = connect(cliFd, (struct sockaddr *)&servAddr, sizeof(servAddr)); if(-1 == ret) { perror("connect error!"); close(cliFd); return -1; } printf("connect ok!\n"); char file[100]; printf("请输入要传送的文件名: \n"); gets(file); int fd=open(file,O_RDONLY);//打开文件,读文件 if(-1==fd) { perror("open file error!\n"); return -1; } char buf[100]; memset(buf,0,sizeof(buf));//清空申请的内存空间 while(1) { int re=read(fd,buf,sizeof(buf)); if(0==re) { break; } send(cliFd,buf,re,0); } return 0; }

3、主要设计步骤:(1)创建套接字(不同主机之间的进程进行双向通信的端点)(2)绑定地址信息(bind)(3)发起连接请求(connect)(4)收发消息(send/recv)(5)关闭通信(close)

5、根据思路写出上传文件的实现代码:服务器端:int fd=open("server.txt",O_WRONLY|O_CREAT,0666);if(fd<0){perror("open file error\n");return -1;}char buf[1024]={0};memset(buf,0,sizeof(buf));//清空申请的内存空间while(1){int rec=recv(connFd,buf,sizeof(buf),0);if(0==rec){break;} write(fd,buf,rec);}printf("file copy success\n");//printf("Allowed contents of flies:\n");//puts(buf);客户端:int fd=open(file,O_RDONLY);//打开文件,读文件if(-1==fd){perror("open file error!\n");return -1;}char buf[100];memset(buf,0,sizeof(buf));//清空申请的内存空间while(1){int re=read(fd,buf,sizeof(buf));if(0==re){break;}send(cliFd,buf,re,0);}
