#include <winsock2.h>
#include <stdio.h>
#define SER_PORT 6000
#define MAX_LEN 1024
struct FILE_INFO{
int fileLen;
char fileName[MAX_PATH];
};
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
//加载套接字库
wVersionRequested = MAKEWORD( 1, 1 ); //第一个1为高字节指定winsock库的副版本,
//第二个1为低字节字节指定winsock库的主版本
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
char buf[MAX_LEN+1]={0};
FILE *fp;
char filename[MAX_PATH];
//创建用于监听的套接字
SOCKET sockSrv;
sockSrv=socket(AF_INET,SOCK_STREAM,0);
//绑定套接字
SOCKADDR_IN addrClient;
addrClient.sin_family = AF_INET;
addrClient.sin_port = htons(SER_PORT);
addrClient.sin_addr.s_addr = htonl(INADDR_ANY); //网络字节区,inet_addr("192.168.0.10")
if(SOCKET_ERROR == bind(sockSrv,(SOCKADDR *)&addrClient,sizeof(SOCKADDR)))
{
perror( "Bind error. ");
exit(1);
}
//将套接字设为监听模式,准备接收客户请求
if(SOCKET_ERROR == listen(sockSrv,5))
{
perror( "listen() error\n ");
exit(1);
}
//等待客户请求到来
int len = sizeof(SOCKADDR);
SOCKET sockConnect= accept(sockSrv, (SOCKADDR*)&addrClient,&len);//其中len必须赋初值
printf("输入新建文件名:\n");
scanf("%s",filename);
FILE_INFO fileInfo;
recv(sockConnect,(char*)&fileInfo,sizeof(FILE_INFO),0);
printf("\n发送文件大小:0x%x字节,\n原文件:%s\n",fileInfo.fileLen, fileInfo.fileName);
fp=fopen( filename, "wb");
if(fp == NULL)
{
printf( "File open error!\n ");
exit(1);
}
int rn;
int num=0;
while(1)
{
rn=recv(sockConnect,buf,MAX_LEN,0);
if(rn < 0)
{
printf( "Can 't receive file!\n ");
exit(1);
}
buf[rn]= '\0 ';
if(rn != 0)
{
num+=rn;
if(num >= fileInfo.fileLen)
{
fwrite(buf, 1, fileInfo.fileLen+MAX_LEN-num , fp);
//printf("1:%d\n",fileInfo.fileLen+MAX_LEN-num);
//printf("最后%d\n", rn);
break;
}
else
{
fwrite(buf,1,rn,fp);
//printf("%d\n",rn);
}
}
else
{
printf("\nreceive over.\n");
printf("0x%x\n",num);
break;
}
}
closesocket(sockConnect);
fclose(fp);
WSACleanup();
getchar();
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
TCP图片的传输.zip (74个子文件)
TCPSrv
TCPSrv
Debug
TCPSrv.vcxprojResolveAssemblyReference.cache 707B
TcpSrv.obj 28KB
cl.command.1.tlog 626B
TCPSrv_manifest.rc 202B
TCPSrv.exe.intermediate.manifest 381B
rc.command.1.tlog 486B
CL.read.1.tlog 13KB
vc100.idb 363KB
mt.read.1.tlog 282B
TCPSrv.lastbuildstate 63B
TCPSrv.exe.embed.manifest 406B
TCPSrv.log 3KB
link-cvtres.read.1.tlog 2B
link.read.1.tlog 3KB
TCPSrv.exe.embed.manifest.res 472B
rc.read.1.tlog 254B
link.write.1.tlog 654B
CL.write.1.tlog 296B
TCPSrv.write.1.tlog 0B
vc100.pdb 108KB
link.command.1.tlog 1KB
mt.write.1.tlog 282B
mt.command.1.tlog 362B
rc.write.1.tlog 262B
link-cvtres.write.1.tlog 2B
TcpSrv.cpp 2KB
TCPSrv.vcxproj 4KB
TCPSrv.vcxproj.user 143B
TCPSrv.vcxproj.filters 944B
TCPSrv.sln 1KB
TCPSrv.suo 20KB
Debug
TCPClient.pdb 491KB
TCPSrv.ilk 347KB
TCPClient.exe 29KB
TCPClient.ilk 346KB
TCPSrv.pdb 507KB
TCPSrv.exe 30KB
ipch
tcpclient-81134580
tcpclient-d8299d2.ipch 31.69MB
tcpsrv-8a79f3f6
tcpsrv-a8b09fae.ipch 31.69MB
TCPSrv.sdf 23.71MB
TCPClient
Debug
cl.command.1.tlog 622B
TCPClient.lastbuildstate 63B
TCPClient.exe.embed.manifest 406B
link.5072.write.1.tlog 2B
rc.command.1.tlog 500B
CL.read.1.tlog 13KB
TCPClient.exe.intermediate.manifest 381B
vc100.idb 363KB
mt.read.1.tlog 278B
TCPClient.exe.embed.manifest.res 472B
link-cvtres.read.1.tlog 2B
link.read.1.tlog 3KB
TCPClient.write.1.tlog 0B
rc.read.1.tlog 250B
link.write.1.tlog 666B
CL.write.1.tlog 284B
TCPClient.log 3KB
vc100.pdb 108KB
link.command.1.tlog 1KB
mt.write.1.tlog 278B
link.5072-cvtres.write.1.tlog 2B
TCPClient.obj 27KB
link.5072-cvtres.read.1.tlog 2B
link.5072.read.1.tlog 2B
TCPClient_manifest.rc 208B
mt.command.1.tlog 372B
rc.write.1.tlog 258B
link-cvtres.write.1.tlog 2B
2.jpg 4KB
3.JPG 1.43MB
TCPClient.vcxproj 4KB
TCPClient.cpp 2KB
TCPClient.vcxproj.filters 947B
TCPClient.vcxproj.user 143B
共 74 条
- 1
资源评论
feeling2006722
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ssm前后端分离鲜花销售系统+vue.zip
- ssm人力资源管理系统+vue.zip
- dropdown 是一款基于layui框架的下拉框控件,填补了layui原生没有下拉框这个空隙 借助下拉框的操作方式和UI交互,可以带来更加直观、便于操作、模块划分清晰等优势
- ssm企业人事管理系统的设计与实现+jsp.zip
- ssm农业视频实时发布管理系统设计+jsp.zip
- ssm农家乐信息平台的设计与实现+vue.zip
- 西门子PLC1500大型程序fanuc机器人焊装 包括1台 西门子1500PLC程序,2台触摸屏TP1500程序 9个智能远程终端ET200SP Profinet连接 15个Festo气动智能模块P
- ssm农产品仓库管理系统系统+jsp.zip
- ssm绿色农产品推广应用网站+vue.zip
- ssm民宿管理系统+jsp.zip
- ssm旅游网站的设计与实现+jsp.zip
- ssm旅游攻略网站设计+jsp.zip
- ssm旅游景点管理系统设计+jsp.zip
- ssm连锁经营商业管理系统+jsp.zip
- ssm临沂旅游咨询系统+vue.zip
- ssm旅行社管理系统的设计与实现+jsp.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功