首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

write((byte)c)这句话是路以字节形式把c写进流里去?if(c=="\n")又是什么意思

2011-11-24 
write((byte)c)这句话是说以字节形式把c写进流里去?if(c\n)又是什么意思?实现Client端功能的ClientApp

write((byte)c)这句话是说以字节形式把c写进流里去?if(c=="\n")又是什么意思?
实现Client端功能的ClientApp.java原文件:

import   java.net.*;
import   java.io.*;
import   java.lang.*;

public   class   ClientApp
{
    public   static   void   main(String   args[])
    {
        try
        {
              //创建通讯并且和主机Rock连接
              Socket   cSocket=new   Socket( "192.168.100.188 ",8018);
              //打开这个Socket的输入/输出流
              OutputStream   os=cSocket.getOutputStream();
              DataInputStream   is=new   DataInputStream(cSocket.getInputStream());

              int   c;
              boolean   flag=true;

              String   responseline;

              while(flag)
              {
                      //从标准输入输出接受字符并且写如系统
                      while((c=System.in.read())!=-1)
                      {
                            os.write((byte)c);
                            if(c== '\n ')
                            {
                                  os.flush();
                                  //将程序阻塞,直到回答信息被收到后将他们在标准输出上显示出来
                                  responseline=is.readLine();
                                  System.out.println( "Message   is: "+responseline);
                            }
                      }
              }
              os.close();
              is.close();
              cSocket.close();

        }
        catch(Exception   e)
        {
            System.out.println( "Exception   : "+   e.getMessage());
        }
    }
}


实现Server端功能的ServerApp.java原文件:

import   java.net.*;
import   java.io.*;

public   class   ServerApp
{
    public   static   void   main(String   args[])
    {
          try


          {
                boolean   flag=true;
                Socket   clientSocket=null;
                String   inputLine;
                int   c;

                ServerSocket   sSocket=new   ServerSocket(8018);
                System.out.println( "Server   listen   on: "+sSocket.getLocalPort());

                while(flag)
                {
                    clientSocket=sSocket.accept();
                    DataInputStream   is=   new   DataInputStream(new   BufferedInputStream(clientSocket.getInputStream()));
                    OutputStream   os=clientSocket.getOutputStream();

                    while((inputLine=is.readLine())!=null)
                    {
                          //当客户端输入stop的时候服务器程序运行终止!
                          if(inputLine.equals( "stop "))
                          {
                                flag=false;
                                break;
                          }
                          else
                          {
                                System.out.println(inputLine);

                                while((c=System.in.read())!=-1)
                                {
                                    os.write((byte)c);
                                    if(c== '\n ')
                                    {
                                        os.flush();       //将信息发送到客户端
                                        break;
                                    }


                                }
                          }


                    }
                    is.close();
                    os.close();
                    clientSocket.close();

                }
                sSocket.close();
          }
          catch(Exception   e)
          {
              System.out.println( "Exception   : "+   e.getMessage());
          }
    }
}


while((c=System.in.read())!=-1)
                            os.write((byte)c);
                            if(c== '\n ')
这三个语句分别是什么意思?我看不懂

还有,OutputStream   os=cSocket.getOutputStream();有这样的语句,但OutputStream不是一个抽象类吗?抽象类不是不可以建立对象的么?
为什么这里会是这样?

问题比较菜,请教啦


[解决办法]
while((c=System.in.read())!=-1)
os.write((byte)c);
if(c== '\n ')

从控制台读入用户输入的字符,直到遇到换行符, '\n '是换行的转义符

至于抽象类和接口是干什么的,请自己看书,看书比你在这问快多了
[解决办法]
while((c=System.in.read())!=-1) // System.in.read() 当返回 -1 时,表示流的结束

if(c == '\n ') // 如果读到的c是换行符

os.write((byte)c); //将c转成字节型写入输出流


OutputStream os=cSocket.getOutputStream(); // 返回的是子类的实例, 读一下Socket类的Api就知道了
[解决办法]
回复楼上的:当读到文件末尾的时候会返回-1,建议看一下read()方法
[解决办法]
从没见过if(c= "\n ")
[解决办法]
抽象类不是不可以建立对象,是不可以通过它本身的构造方法建立对象.
[解决办法]
接口...建模

[解决办法]
' '表示一个字符
" "表示一个字符串
如果写成if(c== "/n ")我没试过,也许会报错
os.write((byte)c);
(byte)强制转换为byte类型,
至于此处为什么这么写,请查一下OutputStream的write方法,这些细节的地方记不清了

热点排行
Bad Request.