网络分类:
按照地理覆盖范围,计算机网络可以划分为局域网、城域网和广域网。
网络分层:
TCP/IP有两种分层形式:
早期的四层模型,由下到上分别是:网络接口层,互联网层,传输层,应用层。
改良后的五层模型,由下到上分别是:物理层,数据链路层,网络层,传输层,应用层。
OSI 的七层结构
由下到上分别是:物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。
IP地址:
我们常用的IPv4地址有32位,由4个8位二进制数组成,每8位之间用圆点隔开,由于二进制不便于记忆,所以通常用十进制表示,如192.168.1.1 不过八位二进制数转化为十进制最大为255,所以四个数不能能比255大。
端口啊,域名解析啊,网络服务器啊,网络通信协议什么的我就不多讲了,直接写编程了。
认识Socket:
在计算机网络编程技术中,两个进程或者说两台计算机可以通过一个网络通信连接实现数据的交换,这种通信链路的端点就被称作“套接字”(英文名称也就是Socket),是网络驱动层提供给应用程序的一个接口或者说一种机制。
java.net包中的两个类Socket和ServerSocket,分别用来实现双向安全连接的客户端和服务器端。他们是基于TCP协议进行工作的。工作过程就像打电话,接通才能通话。
Socket类:
Socket对象在客户端和服务器之间建立连接,可用构造方法创建套接字,并将此套接字连接至指定的主机和端口。
构造方法:
1.以主机名和端口号作为参数。Socket s = new Socket(hostName . port) ;
2.以InetAddress对象和端口号作为参数。Socket s = new Socket ( address , port ) ;
ServerSocket类:
ServerSocket对象等待客户端建立连接,连接建立以后进行通信。
构造方法:
1.接受端口号作为参数。ServerSocket ss = new ServerSocket( port ) ;
2.接受端口号和最大队列长度作为参数。队列长度表示系统在拒绝连接前可以拥有的最大客户端连接数。
ServerSocket ss = new ServerSocket(port , maxqu );
常用accept()方法等待客户端发起通信。
客户端使用Socket,服务器端使用ServerSocket,步骤基本如下:
客户端:
建立连接,连接指向服务器以及端口。Socket socket = new Socket("localhost" , 8800 ); localhost指代本机,8800为要连接的端口。
打开Socket关联的流,OutputStream os=socket.getOutputStream( );
InputStream is =socket.getInputStream( );
向输出流中写消息发送给服务器,从输入流中读取服务器反馈的消息。
String s ="abcdefg";
os.write(s.getBytes( ) ) ;
socket.shutdownOutput( ) ; 输出流输出完毕后关掉,输入流还开启着,相当于半关闭状态。
String reply = null ;
BufferedReader br = new BufferedReader ( new InputStreamReader( is ) ) ;
while(!((reply=br.readLine( ) )==null ){ System.out.println( reply ) ; }
关闭资源。
服务器端:
建立连接,监听端口。ServerSocket serverSocket = new ServerSocket(8800);
使用accept方法等待客户端发起通信。Socket socket =serverSocket.accept( ) ;
打开流。InputStream is = serverSocket.getInputStream( );
OutputStream os =serverSocket.getOutputStream( );
获取客户端信息。 BufferedReader br = new BufferedReader ( new InputStreamReader( is ) ) ;
String info = null ;
while(!((info=br.readLine( ) )==null ){ System.out.println( info) ; }
给客户端一个响应,向输出流写入信息。String reply = "欢迎”;os.write(reply.getBytes( ) ) ;
完整代码:使用Socket 和ServerSocket来编写一个登陆操作,客户端个服务端发消息“你好,服务中心,我是:tom”,在