首先,在开始记录学习的过程钱,再次声明一下:网络数据传输的原理其实与文件->IO,IO->文件的原理是一样的,计算机科学是人造科学,并非自然科学,一切的设计原理都是基于人类目前的认知范围。合理的设计模式会被不断的复用。
作为一个客户端应用程序,必须满足的2个最基本的功能是接收来自网咯的数据,向网络输出数据。
1、客户端接收网络数据。
byte[] buffer=new byte[1024];
Socket readSsocket=null;//网络数据套接字
InputStream instr=null;//标准输入输出流
readSocket =new Socker(args[0],Integer.parInt(args[1]));//此处的两个参数分别对应域名和端口
instr= readSocket.getInputStream();
int n=instr.read(buffer);
System.out.write(buffer,0,n);
对比我上一篇写的博客,可以发现,接收网络数据,其实就跟接收来自文件的数据是一样的,不同的是:
1、多了一个套接字,并利用套接字连接上相应的服务器。
2、将套接字的数据源变换成标准输入输出的数据源。
而后的工作都是将数据读到buffer中,在write至显示器
2、客户端向网络服务器输出数据
此处我们要实现的功能是:1、连接网络服务器并发送数据
2 、接收服务器发送来来的数据,原样输出至屏幕
byte[] buffer=new byte[1024];
Socket wrSocket=null;
InputStream instr=null;
OutputStream outstr=null;
wrSocket=new Socket(args[0],Integer.parseInt(args[1]));
instr=wrSocket.getInputStream();//绑定输出源
outstr=wrSocket.getOutputStream();//绑定输入源
int n=System.in.read(buffer);//获取键盘输入
System.out.write(buffer,0,n);
outstr.write(buffer,0,n);//将键盘输入写到输出源
int n=instr.read(buffer);//获取网络输入
System.out.write(buffer,0,n);//将网络输入显示到显示屏
总结:通过以上2个简单客户端功能例子,能够快速明白客户端的运行机制。
利用Socket绑定数据的输入输出,再与标准输入输出进行连接即可。其实很简单,不是么?