网路:个人java笔记(1)

通讯协议大概分五层。
分层优势 : 不须要管具体实现,只须要作本身的事情。
分层标准:
OSI 参考模型
TCP/IP 参考模型
TCP/IP 详解(了解网络底层的书)
IPV6 的相关问题
 
TCP 为可靠的因特网链接
UDP 为不可靠的因特网链接
 
 
Socket 的基本概念:
两个 java 应用程序能够经过一个双向的网络通讯链接实现数据交换,这个双向链路的一端称为一个 Socket
Socket 一般用来实现 client server 链接。( CS 模式,客户端服务器模式)
java.net 包中定义两个类 Socket ServerSocket ,分别用来实现双向连接的 client server 端。
创建链接时所需的寻址信息为远程计算机的 IP 地址和端口号( Port number
 
网络编程: Socket 编程
 
ServerSocket TCP 上的服务器端口。
 
IP 地址和端口号(Port number
端口号表示应用程序的识别码
相似于IP  端口号为两个字节最多有65536 个端口
一个应用程序能够应用多个端口号
 
注意一点:本身编程占用端口号时:尽可能用 1024 以上的端口号,由于 1024 如下的端口系统有可能征用。
 
关于数据的传输使用流的概念。
流的东西在 java.io.* 包中。
 
Socket 端口上有个 getInputStream() 方法
注意: DataInputStream 类中的 readUTF ();方法也是阻塞式的方法。
 
ServerSocket 的方法accept()也为阻塞式的。
因为readUTF方法为阻塞式的
则会产生以下问题:
当一个客户端调用服务器的时候进行通讯调用readUTF()方法时,就会产生阻塞,其余的客户端就没法访问服务器。
 
在服务器中使用 Socket getInetAddress 获取客户端的端口号
CS 之间的数据传输:使用流概念就是: OutPutStream InPutStream
能够在各类流上添加相应的处理流。用来方便处理。
 
如今咱们能够作一个简单的聊天程序。
 
做业。。。。。。。。。


小例子:
客户端:
import java.net.*;
public class TCPClient
{
    public void main(String[] args) throws Exception
    {
        Socket cl = new Socket("127.0.0.1",6666);//有异常产生,127.0.0.1为本地IP地址。6666为端口号
       
    }
}


服务器端:

import java.net.*;public class TCPServer{    public void main(String[] args) throws Exception    {        ServerSocket a=new ServerSocket(6666);//监听6666端口号 有异常产生,能够抛出。        while(true)//服务器端为死循环,一直循环等待客户端链接。        {        Socket s=a.accept();//在服务器上建立一个和客户端相链接的Socket端口,抛出IO异常。这时候只能接受一个客户端的链接,由于一个Acception只能接受一个客户端链接。        //Accept方法为阻塞式的方法。        System.out.println("链接结束");        }            }}
相关文章
相关标签/搜索