文档介绍:
网络编程技术实验报告
实验名称
实验四利用流式套接字传输文件实验
队别
姓名
学号
实验日期
2015.12.11
实验报告要求: 1.实验目的 2.实验要求 3.实验环境 4.实验作业 5.问题及解决
6.思考问题 7.实验体会
【实验目的】
1.掌握定长与变长流式套接字的使用方法
2.加深对流式套接字的掌握
3.掌握一些解决实际问题的能力
【实验要求】
客户端向服务器发起socket连接,并建立数据传输通道
客户端向服务器发送要传输的文件名称,以"#"字符结尾,服务器逐字接收,直到接收到#(变长数据)
客户端向服务器发送文件长度,4字节(定长数据)
客户端向服务器文件内容(变长数据)
服务端接收完文件后,向客户端发送ok,以示成功接收
客户端接收到OK后,关闭套接字
服务器关闭套接字
【实验环境】
Dev c
【实验作业】
客户端:
int tcp_client_fun_echo(FILE *fp,SOCKET s)
{
int iResult;
char sendline[MAXLINE],recvline[MAXLINE];
char file[20];
char flong[4];
int i=0;//文件名发送控制
//初始化缓冲区
FILE *f;//写文件指针
char *buff;//读入文件内容
uint32_t nFileLen;//文件长度
printf("请输入文件名:\n");
scanf("%s",&file);
f=fopen(file,"rb");
if(f==NULL)
printf("打开文件失败或文件不存在!\n");
fseek(f,0,SEEK_END);
nFileLen=ftell(f);
rewind(f);//回到到文件头部
buff=(char *)malloc(nFileLen);
iResult=fread(buff,1,nFileLen,f);
if(iResult!=nFileLen)
{
printf("读入文件错误!\n");
return 0;
}
memset(sendline,0,MAXLINE);
memset(recvline,0,MAXLINE);
while(i!=nFileLen)
{
recvline[i]=*buff;
i++;
buff++;
}
//文件名传输结束
sprintf(sendline,"%s#%d%s",file,nFileLen,recvline);
iResult=send(s,sendline,sizeof(sendline),0);
if(iResult==SOCKET_ERROR)
{
printf("send函数调用错误,错误号:%d",WSAGetLastError());
return -1;
}
fclose(fp);
printf("文件发送完成!\n");
return iResult;
}
服务器:
int tcp_server_fun_echo(SOCKET s)
{
内容来自淘豆网www.taodocs.com转载请标明出处.