CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

java socket进行交互数据的一点疑问

楼主BlueanGel(地狱天使)2005-04-20 22:15:06 在 Java / J2SE / 基础类 提问

try  
  {  
                          server   =   new   ServerSocket(m_iPort);  
                          while(true)  
                          {  
                                client   =   server.accept();  
                                 
                                InputStream   is   =   client.getInputStream();  
                                OutputStreamWriter   os   =   new   OutputStreamWriter(client.getOutputStream());  
                                PrintWriter   out   =   new   PrintWriter(os);  
                                 
                                strIn   =   GetData(is,   STATLENGTH);  
                                 
                                if(strIn.compareTo(QRY)   ==   0)  
                                {  
                                        out.println("HAS");    
                                        /*   在这里向客户端提交其他语句,要等待客户返回还需要server.accept()   吗?还是直接   GetData   就可以了?*/  
                                        strIn   =   GetData(is,   STATLENGTH);  
                                        if(strIn.length()   ==   32)  
                                        {  
                                                strHash   =   strIn.toString();  
                                        }  
                                }  
                                out.close();  
                                is.close();  
                                client.close();  
                          }  
  } 问题点数:50、回复次数:4Top

1 楼majcos(千里之行,始于足下)回复于 2005-04-20 22:24:35 得分 25

还是直接   GetData   就可以了吧  
  你的GetData是怎么实现的?如果客户端的数据还没有到达服务端的话,那个读is的数据的方法就会被block,直到数据到达。Top

2 楼star_str(生命火花)回复于 2005-04-20 22:29:22 得分 25

我影象中数据c-s之间的传送都是先套用以下过程  
  数据->packet->send->Server->receive->packet->getData  
   
  所以我认为要getDataTop

3 楼BlueanGel(地狱天使)回复于 2005-04-20 22:30:29 得分 0

public   String   GetData(InputStream   is,   long   lDataLength)   throws   IOException  
          {  
                  StringBuffer   sbBuffer   =   new   StringBuffer();  
                  char   b;  
                   
                  for(int   i=0;   i<lDataLength;   i++)  
                  {  
                          b   =   (char)is.read();  
                           
                          sbBuffer.append(b);  
                  }  
                  return   sbBuffer.toString();  
          }  
   
  那就是说我不需要重新再创建socket来等待客户端的下个数据咯?记得accept也是block的Top

4 楼BlueanGel(地狱天使)回复于 2005-04-20 22:32:54 得分 0

to   star_str(生命火花)   :  
  我的意思是,在我前面的代码中,out.println("HAS");   之后是否还需要server.accept一次?  
   
  或者直接GetData就可以得到客户端的第二次数据?Top

相关问题

  • c++ socket疑问
  • 关于JAVA的socket连接的安全疑问?
  • 简单的与数据库交互的疑问!
  • thinking in java的疑问???
  • [诚送60分]何用Java 的socket 来实现服务器和客户端的图象交互传输,急盼!!!
  • 在JSP中,java和JavaScript如何交互?
  • 关于JAVA的疑问。
  • java bean的一点疑问
  • 对于Socket中连接的疑问...
  • 有关socket控件的疑问

关键词

  • 数据
  • 客户
  • client
  • server
  • getdata
  • strin
  • close

得分解答快速导航

  • 帖主:BlueanGel
  • majcos
  • star_str

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo