Java进阶之网络编程

网络编程

TCP/IP Socket网络通讯

在联网环境(包括内部网环境和互联网环境)下,两台主机可以实现通讯,进行数据交换。

   TCP/IP: transport controller protocal传输控制协议

           internet protocal 互联网协议

TCP/IP网络通讯模型:基于客户端-服务端架构的网络通讯模型。

客户端主机——(TCP/IP)——服务器主机

作为服务器的主机,通常处于伺服状态,等待来自客户端的连接请求。一次完整通讯步骤:

客户端想服务器发出TCP/IP连接请求

服务器端接受请求后,与客户端建立Socket连接

双方进行数据通讯(客户端与服务端相互发送接受数据)

双方关闭连接

 

IP地址 :  主机在网络中的逻辑地址   

物理地址  :   和设备相关

端口  :网络间的通信本质上是进程间的通信  监听进程的编号 范围 0~65535

协议   :   双方之间通信的标准和约定

寻址与套接字

连接寻址:客户端寻找服务器以向其发送连接请求。进行连接寻址是服务器需对外提供:

服务器主机的IP地址或主机名称

服务器端标识连接目的的端口号:065535,1024以内系统保留

Socket(套接字)通道:建立连接后,服务器与客户端形成的虚拟网络通道,数据在这个通道中进行传输。

网络的分层

TCP-IP四层结构   网络接口  网络层   传输层   应用层

传输层

在CoreJava中我们用到的网络编程技术主要是解决传输层中的问题

TCP    传输控制协议   面向连接    可靠

UDP 用户数据包     非连接      不可靠

客户端

Socket   :  s =  new Socket(“IP地址” ,  端口号);

     s.getInputStream()

     s.getOutputStream()

服务器

ServerSocket   :   ss =  new ServerSocket(端口号);  

Socket             s=    ss.accept();

为每一个s开启一个线程

          new Thread(new Runnable(){

Public void  run(){

…….      s.getInputStream();

……..   s.getOutputStream();

}

  }).start();

或者写一个实现Runnalbe的类 在构造方法中传入Socket对象----同等效果

无论是在服务器还是在客户端 在关闭流的时候我们都需要关闭 s  使用缓冲流写入数据的时候必须使用 out.flush()  || out.close() 刷新||关闭  流

posted @ 2018-04-30 02:37  jxtx92  阅读(24)  评论(0)    收藏  举报