#define SIZE 1024*8 void main() {
FILE *fp; int err;
int length=0;
SOCKET clientSocket;
SOCKADDR_IN clientsock_in; char receiveBuf[100]={\
char ip_addr[16]={\WORD versionRequired; WSADATA wsaData;
versionRequired=MAKEWORD(1,1);
err=WSAStartup(versionRequired,&wsaData);//协议库的版本信息
if (!err) {
printf(\客户端嵌套字已经打开!\\n\} else {
printf(\客户端的嵌套字打开失败!\\n\ return;//结束 }
clientSocket=socket(AF_INET,SOCK_STREAM,0); printf(\请输入主机IP:\\n\scanf(\//连接服务器
clientsock_in.sin_addr.S_un.S_addr=inet_addr(ip_addr); clientsock_in.sin_family=AF_INET; clientsock_in.sin_port=htons(6000);
connect(clientSocket,(SOCKADDR*)&clientsock_in,sizeof(SOCKADDR));//开始连接
recv(clientSocket,receiveBuf,101,0); printf(\char path[100]={\gets(path); int i=0; do {
printf(\请输入文件地址:\\n\ gets(path);
while(path[i]!='\\0') {
if(path[i]=='/') path[i]='\\\\'; i++; } i=0;
if((fp=fopen(path,\ {
i=1;
printf(\文件未打开\\n\ }
}while(i);
fseek(fp,0L,SEEK_END); length=ftell(fp);
printf(\待传送文件大小: %d\\n\
printf(\文件已经打开 等待主机消息......\\n\//得到主机开始传送消息
recv(clientSocket,receiveBuf,101,0); printf(\
if(strcmp(receiveBuf,\开始传送\{
//传送文件长度 char sendBuf[20];
ltoa(length,sendBuf,10);
send(clientSocket,sendBuf,21,0); fseek(fp,0L,SEEK_SET); //传送文件 long int y=0; double cent;
char trans[SIZE]; while(!feof(fp)) {
fread(trans,1,SIZE,fp); y=y+SIZE; if(y cent=(double)y*100.0/(double)length; printf(\已发送: %4.2f%\\n\ send(clientSocket,trans,SIZE+1,0); } else { send(clientSocket,trans,length+SIZE-y+1,0); closesocket(clientSocket); WSACleanup(); } } fclose(fp); } printf(\文件发送完毕\\n\system(\} 五、 实验结果及分析: 客户端运行结果 服务器端运行结果 六、 心得体会:网络编程的实验课虽然只有八次,但是我们充分了解了 各种网络编程和winsock控件的知识,了解了TCP/IP协议的相关知识以及其中两个重要协议TCP UDP的特点与差异,进一步学习了文件传输等知识,创建套接字 监听 传输 关闭等过程,直到最后写出C/S模式的文件传输程序 感觉我们巩固了教材的内容 实践的能力也得到了提高 不足之处就是自己粗心大意,在写代码时候 参数 注解等经常注明的不够好,希望以后能养成良好的编程习惯 搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新教学研究网络编程文件传输实验报告 (2)全文阅读和word下载服务。
相关推荐: