实操理解操作系统概念P95日期服务器和日期客户端

一如何在linux运行java

https://blog.csdn.net/maslii/article/details/88550050
1、先创建java项目目录,名称MyTest。

mkdir MyTest

2、在项目中创建src和bin目录,src下用于存放 “.java” 文件,bin下存放 “ .class ” 文件。

cd MyTest
mkdir src bin

3、在src下创建包com.stu。

mkdir -p src/com/stu

4、在包中编写java文件,文件名为Hello.java。

vi src/com/stu/Hello.java

 package com.stu;  // 包名

   public class Hello{
     public static void main(String[] args){
       System.out.println("Hello world");
     }
   }

   // vim中编写,完成后保存退出。

没有vim所以我使用之前创建文件的方式。详情看在linux编译理解进程
5、在bin目录下创建用于存放MyTest项目中生成的class文件的目录。

mkdir bin/MyTest

6、编译java文件,将生成的编译文件存放在bin/MyTest下,其中的com/stu目录会自动创建,因为“package com.stu;”语句。“-d”表示指定生成class文件的位置。

javac ./src/com/stu/Hello.java -d ./bin/MyTest/

7、执行java文件。“-cp”表示classpath,后跟路径,创建的是什么就指定哪里,否则会报错。之后再指定包名.类名即可运行。

java -cp ./bin/MyTest/ com.stu.Hello 

二原封不动代码

//客户端名字和包微调
package com.stu;
import java.net.*;
import java.io.*;
 public class hellocli{
public static void main(String[] args){
	try{
	Socket sock=new Socket("127.0.0.1",6013);
	InputStream in=sock.getInputStream();
	BufferedReader bin=new BufferedReader(new InputStreamReader(in));
	String line;
	while((line=bin.readLine())!=null)
	System.out.println(in.readLine());
	sock.close();
	}
	catch(IOException ioe){
	System.err.println(ioe);
	}
    }
}
//服务器端
package com.stu;
import java.net.*;
import java.io.*;
 public class Hello{
public static void main(String[] args){
	try{
	ServerSocket sock=new ServerSocket(6013);
	while (true){
	Socket client=sock.accept();
	PrintWriter pout=new PrintWriter(client.getOutputStream(),true);
	pout.println(new java.util.Date().toString());
	client.close();
		}
	}
	catch(IOException ioe){
	System.err.println(ioe);
	}
    }
}

三理解。

服务器端。
client是一个套接字。printwriter不是很理解 应该是建立一个能把数据流包起来的什么东西可以允许用函数写到套接字。所以就能把日期写到套接字发给客户机。
然后客户端。sock套接字。in是输入流(看补充材料)BufferedReader不太理解,和readline一起把in得到的数据合理输出。

补充资料:

getInputStream与getOutputStream详解https://blog.csdn.net/fjcsdn/article/details/80633660
客户端上的使用

1.getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputStream方法得到输入流其实就是从服务器端发回的数据。

2.getOutputStream方法得到的是一个输出流,客户端的Socket对象上的getOutputStream方法得到的输出流其实就是发送给服务器端的数据。

服务器端上的使用

1.getInputStream方法得到的是一个输入流,服务端的Socket对象上的getInputStream方法得到的输入流其实就是从客户端发送给服务器端的数据流。

2.getOutputStream方法得到的是一个输出流,服务端的Socket对象上的getOutputStream方法得到的输出流其实就是发送给客户端的数据。

BufferedReader和BufferedWriter简介https://blog.csdn.net/qq_21808961/article/details/81561464
为了提高字符流读写的效率,引入了缓冲机制,进行字符批量的读写,提高了单个字符读写的效率。BufferedReader用于加快读取字符的速度,BufferedWriter用于加快写入的速度

BufferedReader和BufferedWriter类各拥有8192个字符的缓冲区。当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并放满缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值