Java进阶之网络编程
网络编程
TCP/IP Socket网络通讯
在联网环境(包括内部网环境和互联网环境)下,两台主机可以实现通讯,进行数据交换。
TCP/IP: transport controller protocal传输控制协议
internet protocal 互联网协议
TCP/IP网络通讯模型:基于客户端-服务端架构的网络通讯模型。
客户端主机——(TCP/IP)——服务器主机
作为服务器的主机,通常处于伺服状态,等待来自客户端的连接请求。一次完整通讯步骤:
客户端想服务器发出TCP/IP连接请求
服务器端接受请求后,与客户端建立Socket连接
双方进行数据通讯(客户端与服务端相互发送接受数据)
双方关闭连接
IP地址 : 主机在网络中的逻辑地址
物理地址 : 和设备相关
端口 :网络间的通信本质上是进程间的通信 监听进程的编号 范围 0~65535
协议 : 双方之间通信的标准和约定
寻址与套接字
连接寻址:客户端寻找服务器以向其发送连接请求。进行连接寻址是服务器需对外提供:
服务器主机的IP地址或主机名称
服务器端标识连接目的的端口号:0至65535,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() 刷新||关闭 流

浙公网安备 33010602011771号