`
guiqing85
  • 浏览: 162777 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JAVA网络编程

阅读更多
网络的概念:相互连接,独立自主
网络与分布式集群系统的区别:每个节点都是一台计算机,而不是各种计算机内部的功能设备。
Ip:具有全球唯一性,相对于internet,IP为逻辑地址,TCP/IP网络中的每台计算机都有唯一的地址--IP地址. 唯一标示一台主机

在Java中,有一个用来存储internet地址的类叫InetAddress.

例:获取本机的IP地址
import java.net.*;
public class getLocalHostTest
{  public static void main()
   {   InetAddress myIP=null;
        try {myIP=InetAddress.getLocalHost();}
       catch{UnknowHostException e){}
       System.out.println(myIP);
   }
} 

创建inetAddress类不用构造函数(不用new)

端口(port):一台PC中可以有65536个端口,进程通过端口交换数据。连线的时候需要输入IP也需要输入端口信息。每个端口都可以和一个进程绑定。

计算机通信实际上是主机之间的进程通信,进程的通信就需要在端口进行联系。

192.168.0.23:21
协议:为了进行网络中的数据交换(通信)而建立的规则、标准或约定。协议定义的是数据的传输方式。
不同层的协议是不同的。
网卡:每个网卡都有一个物理地址。
网络层:寻址、路由(指如何到达地址的过程)
传输层:端口连接
TCP模型:应用层/传输层/网络层/网络接口
TCP:传输控制协议 安全面向链接,可靠的协议,保证不错序,不丢包
UDP: 用户数据报协议,
无链接,不安全,传输时把数据分成一个个数据报,最大64K,路径不同,容易丢包。
端口是一种抽象的软件结构,与协议相关:TCP23端口和UDT23端口为两个不同的概念。
端口应该用1024以上的端口,以下的端口都已经设定功能。

80端口:网络端口
21端口:ftp协议
23端口:telnet 远程访问
13端口:获得系统日期
127.0.0.1为一个默认本机的地址。
Localhost本机
套接字(socket)的引入:
Ip+Port=Socket(这是个对象的概念。)
一个Socket 绑定一个进程。
Socket为传输层概念,而JSP是对应用层编程。例:
java.net.*;
(Server端定义顺序)
ServerSocket(intport)
Socket.accept();//阻塞方法,当客户端发出请求时恢复
如果客户端收到请求:
则Socket SI=ss.accept();
注意客户端和服务器的Socket为两个不同的socket。
Socket的两个方法:
getInputStream():客户端用
  getOutputStream() 服务器端用
使用完毕后切记Socket.close(),两个Socket都关,而且不用关内部的流。
在client端,Socket s=new Socket(“127.0.0.1”,8000);
UDP编程:
DatagramSocket(邮递员):对应数据报的Socket概念,不需要创建两个socket,不可使用输入输出流。
DatagramPacket(信件):数据包,是UDP下进行传输数据的单位,数据存放在字节数组中。
UDP也需要现有Server端,然后再有Client端。
两端都是DatagramPacket(相当于电话的概念),需要NEW两个DatagramPacket。
InetAddress:网址
这种信息传输方式相当于传真,信息打包,在接受端准备纸。
模式:
发送端:Server:
DatagramPacket  inDataPacket=new DatagramPacket ((msg,msg.length); InetAdress.getByName(ip),port);
接收端:
clientAddress=inDataPack.getAddress();//取得地址
clientPort=inDataPack.getPort();//取得端口号
datagramSocket.send;  //Server
datagramSocket.accept;  //Client

URL:在应用层的编程
注意比较:
http://Localhost:8080/directory  //查找网络服务器的目录
file://directory                 //查找本地的文件系统
java的开发主要以http为基础。
反射:主要用于工具和框架的开发。
反射是对于类的再抽象;通过字符串来抽象类。
JAVA类的运行:classLoader:加载到虚拟机(vm)
Vm中只能存储对象(动态运行时的概念),.class文件加载到VM上就成为一个对象,同时初始静态成员及静态代码(只执行一次)。
Lang包下有一个类为Class:在反射中使用。此类中的每个对象为VM中的类对象,每个类都对应类类的一个对象(class.class)。
例:对于一个Object类,用getClass()得到其类的对象,获得类的对象就相当于获得类的信息,可以调用其下的所有方法,包括类的私有方法。
注意:在反射中没有简单数据类型,所有的编译时类型都是对象。
反射把编译时应该解决的问题留到了运行时。
UDP编程:
Server:
1.DatagramSocket(13);
2.byte[]
3. DatagramPacket(b,b.length)
4.receive(in)
5. InetAdderss(Client) Post(Client)
6. DatagramPacket(b,b.length,ip,post)
7. send(out) 8.close()

Client
1. byte[] 
2 DatagramPacket(b,b.length,ip,post)
3 . send(out)
4 DatagramPacket(b,b.length)
5. receive(in)
6 getDataString //转换
7 .close()

URL:统一资源定位器,唯一标识网络里的地址:http, ftp, file
http://www.hao123.com.cn
http://127.0.0.1:13/index/Login.html
只能获得输入流:  InputStream in = url.openStream();
可以获得输入流和输出流:
URLConnection uc = url.openConnection
uc.getInputStream() and uc.getOutputStream()


String s1 = “Hello”; 
String s2 = “Hello”;
String s3 = new String“Hello”; 
String s4 = new String“Hello”; 
String s5 = s4;
s4 = s1; 
s3 = “Hello”;
一共创建了3个对象 8块内存 回收了一块内存
8块内存:-S1,s2,s3,s4,s5,new,new,s1=”Hello”
3个对象:new ,new ,”Hello”
注:s5=s4 将s4的内存地址赋给了s5

  • 大小: 42.9 KB
  • 大小: 33.5 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics