黑马程序员-----网络编程

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

网络模型: OSI模型和TCP/IP参考模型

OSI参考模型 TCP/IP参考模型 
应用层 
表示层 应用层 
会话层 
传输层 传输层 
网络层 网际层 
数据链路层 
物理层 主机至网络层

一般来说开发处于传输测和网际层, 应用层为:FTP和HTTP协议, 传输层为:UDP和TCP等。 网际层为IP。

通常用户操作的是应用层, 而编程人员需要的做的事传输层和网际层, 用户在应用操作的数据,经过逐层封包, 最后到物理层发送到另一个模型中, 再进行逐层解包, 图示为:

2. 网络通信三要素: IP地址, 端口号, 传输协议
A. IP地址
他是网络中的设备标识
不易记忆,可用主机名表示, 两者存在映射关系
本机回环地址, 127.0.0.1 主机名名为 localhost

Ip地址: java中对应的InetAddress类, 存在于java.net包中 
IntAddress类 
(一)无构造函数, 可通过getLocalHost()方法获取IntAddress对象, 
IntAddress i = InetAddress.getLocaHost();

Socket

1、它被称之为插座,相当于港口一样,是网络服务提供的一种机制。 
2、通信两端都要有Socket,才能建立服务。

    3、网络通信其实就是Socket间的通信,数据在两个Socket间通过IO传输。

UDP/TCP

UDP 
面向无连接:将数据及目的封装在数据包中(需要明确地址和端口),不需要建立连接 
每个数据包的大小限制在64K内 
因为无连接,是不可靠协议 
不需要建立连接,速度快

TCP 
建立连接,形成传输数据的通道 
在连接中进行大数据传输 
通过三次握手完成连接,是可靠协议 
必须建立连接,效率低

TCP客户端 
1,建立tcp的socket服务,最好明确具体的地址和端口。这个对象在创建时,就已经可以对指定ip和端口进行连接(三次握手)。 
2,如果连接成功,就意味着通道建立了,socket流就已经产生了。只要获取到socket流中的读取流和写入流即可,只要通过getInputStream和getOutputStream就可以获取两个流对象。

import java.net.*;
import java.io.*;
//需求:客户端给服务器端发送一个数据。
class  TcpClient{
    public static void main(String[] args) throws Exception{
        Socket s = new Socket("10.1.31.69",10002);
        OutputStream out = s.getOutputStream();//获取了socket流中的输出流对象。
        out.write("tcp done!".getBytes());
        s.close();
    }
}

TCP服务端: 
1,创建服务端socket服务,并监听一个端口。 
2,服务端为了给客户端提供服务,获取客户端的内容,可以通过accept方法获取连接过来的客户端对象。 
3,可以通过获取到的socket对象中的socket流和具体的客户端进行通讯。 
4,如果通讯结束,关闭资源。注意:要先关客户端,再关服务端。

class  TcpServer{
    public static void main(String[] args) throws Exception{
        ServerSocket ss = new ServerSocket(10002);//建立服务端的socket服务
        Socket s = ss.accept();//获取客户端对象
        String ip = s.getInetAddress().getHostAddress();

        //可以通过获取到的socket对象中的socket流和具体的客户端进行通讯。
        InputStream in = s.getInputStream();

        //读取客户端的数据,使用客户端对象的socket读取流
        byte[] buf = new byte[1024];
        int len = in.read(buf);
        String text = new String(buf,0,len);
        System.out.println(text);
        //      如果通讯结束,关闭资源
        s.close();
        ss.close();
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值