socket编程持续交流java_socket编程的简单问题
代码的用处:从服务器下载文件,先给服务器发送要下载的文件名,然后等待客户端发送信息是否找到这个文件
找到则发给客户段found,然后就开始接收文件,否者notfound,结束程序。
客户端代码:
环境是:Windows下QT软件,TCP协议
void file::judgeInfo()
{
QString tempname=lineEdit->text();
QByteArray tmppas = tempname.toLatin1();
char *filename = tmppas.data();
cout <
char judge[10]=”found”;
if(send(sclient,filename,1024,0)<0) //文件名字
cout <
else
{
memset(judge,0,10);
while(1)
{
recv(sclient,judge,10,0); //接收服务器发过来的信息,即有没有这个文件
cout<
}
cout < “<
if(strcmp(judge,”found”)==0) //发现则进行接收服务器发过来的文件
{
downloadRoot=downloadRoot+””/””+tempname;
QByteArray tmppas1 = downloadRoot.toLatin1();
char *recvfilename = tmppas1.data();
QMessageBox::warning(this,”warning—-“,recvfilename);
thread.recvfilesThead(sclient,recvfilename);
QMessageBox::information(this,”recv ok!”,”recv ok”);
thread.terminate();
}
else
QMessageBox::warning(this,”Waring”,”未找到这个文件!”);
}
}
服务器代码:
void sendfile(MA_Cli *tempsocket,char *filename)//接收的套接字和文件的名字
{
printf(“2 %d”,tempsocket);
FILE *fd=fopen(filename,”rb”);
char buff[SENDMAXSIZE];
int read_len=0;
if(fd==NULL) //查找是否有 文件
{
printf(“File: %s not found!\n”,filename);
send(tempsocket->MA_clientfd,”Not found !\n”,SENDMAXSIZE,0);
}
else
{
char found[]=”found”;
send(tempsocket->MA_clientfd,found,sizeof(found),0);//找到则发送found,然后就开始发送文件
memset(buff,0,SENDMAXSIZE);
while(read_len=(fread(buff,sizeof(char),SENDMAXSIZE,fd)))
{
if(send(tempsocket->MA_clientfd,buff,SENDMAXSIZE,0)<0)
{
printf(“Error failed send !\n”);
exit(1);
}
memset(buff,0,SENDMAXSIZE);
}
sleep(3);
send(tempsocket->MA_clientfd,”end”,3,0);
fclose(fd);
printf(“Transfer file finished !\n”);
}
}
出现的错误:
在客户端总是接收不到真正的found,接收输出的信息是个乱码
在服务器中,那个found一直发布过去,好像是阻塞在那里了,如果客户端关闭,found才发过去。
socket编程持续交流java_socket编程的简单问题相关推荐
- python 图形化socket编程_Python黑帽编程2.8 套接字编程
Python黑帽编程2.8 套接字编程 套接字编程在本系列教程中地位并不是很突出,但是我们观察网络应用,绝大多数都是基于Socket来做的,哪怕是绝大多数的木马程序也是如此.官方关于socket编程的 ...
- Qt:Qt实现Winsock网络编程—非阻塞模式下的简单远程控制的开发(WSAAsyncSelect)
Qt实现Winsock网络编程-非阻塞模式下的简单远程控制的开发(WSAAsyncSelect) 前言 这边博客应该是 Qt实现Winsock网络编程-TCP服务端和客户端通信(多线程) 的姐妹篇,上 ...
- 【青少年编程竞赛交流】03月份微信图文索引
03月份微信图文索引 由于"组队学习"这个公众号的功能主要是组织Datawhale社群中的学习者们每个月的组队学习,所以,我另外新建了这个微信公众号"青少年编程竞赛交流& ...
- 青少年编程竞赛交流群第050次活动录播
背景介绍 把电子学会的青少年编程能力等级测评作为游戏的关卡,带着小朋友们升级打怪,这个想法来自于 我从邵慧宁身上得到的启发. 升级打怪: 电子学会考评中心:http://www.qceit.org.c ...
- 青少年编程竞赛交流群第048次活动录播
背景介绍 把电子学会的青少年编程能力等级测评作为游戏的关卡,带着小朋友们升级打怪,这个想法来自于 我从邵慧宁身上得到的启发. 升级打怪: 电子学会考评中心:http://www.qceit.org.c ...
- 【青少年编程竞赛交流】01月份微信图文索引
01月份微信图文索引 由于"组队学习"这个公众号的功能主要是组织Datawhale社群中的学习者们每个月的组队学习,所以,我另外新建了这个微信公众号"青少年编程竞赛交流& ...
- 【青少年编程竞赛交流】02月份微信图文索引
02月份微信图文索引 由于"组队学习"这个公众号的功能主要是组织Datawhale社群中的学习者们每个月的组队学习,所以,我另外新建了这个微信公众号"青少年编程竞赛交流& ...
- 【新周报(045)】青少年编程竞赛交流群周报
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 为了完成二月份青少年编程公益训练营的活动 ...
- 【青少年编程竞赛交流】12月份微信图文索引
12月份微信图文索引 由于"组队学习"这个公众号的功能主要是组织Datawhale社群中的学习者们每个月的组队学习,所以,我另外新建了这个微信公众号"青少年编程竞赛交流& ...
最新文章
- PowerShell2.0之桌面计算机维护(九)磁盘管理
- (转载)浏览器兼容性问题大汇总
- Pandas库DataFrame的排序
- 如何使用Visual Studio无需成本即可实现连续集成
- C++控制台打飞机小游戏 | CSDN 博文精选
- php 删除 session 文件,如何删除php中的session文件
- LeetCode - 231. Power of Two - 判断一个数是否2的n次幂 - 位运算应用实例 - ( C++ )
- 如何自学python-如何自学Python编程呢?老男孩Python学习方法
- 阿言学习之Hadoop fs常用命令
- 纯html 404页面,一款纯css3实现的漂亮的404页面_html/css_WEB-ITnose
- office 2003 兼容包 (兼容 office 2007 office 2010)
- java list 转json数组_list转json数组
- PDF虚拟打印机的输出目录在注册表里
- 未群发消息接腾讯服务器吗,腾讯企业QQ(协同)如何设置并群发消息?
- OpenSSL 使用openssl工具搭建私有CA
- NPOI导出数据,设置格式,锁定单元格
- goahead 移植
- 秉火429笔记之十 EXTI-外部中断/事件
- 将数组修改为峰谷相间
- css中background-size属性cover、contain、100%的含义案例详解
热门文章
- oracle querytimeout,聊聊pg jdbc的queryTimeout及next方法
- python考试pass or fail_Pytest官方教程-12-skip及xfail: 处理不能成功的测试用例
- mysql binary 查询_MYSQL的binary解决mysql数据大小写敏感问题 《转载》
- office右键菜单修复_自从有了这个工具,我的Office操作已经快到慢不下来了!
- 计算机能实现哪些人类智力活动,人工智能是电脑科学的一个重要分支,它的近期目标是什么?...
- java 线程百科_Java并发——线程介绍
- 舒服的网页登录界面设计灵感
- 留住用户的APP弹窗设计素材模板
- python pdf报告_python生成pdf报告、python实现html转换为pdf报告
- c++绘制函数图像_简洁优雅的Matplotlib可视化 | 绘制论文曲线图