黑马程序员--网络编程

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

                  

                                                                      

                                                               Java网络编程

 

数据通信的原理就是数据传输的过程。。。。
通信规则。这个通信规则称为协议。国际组织定义了通用协议TCP/IP。
IPX协议应用于局域网使用协议

 

1.找到对方IP
2.数据要发送到对方指定的应用程序上,为了标识这些应用程序,所以给这些网络应用程序都用数字进行标识。为了
 方便称呼这些数字,叫做   端口   。也叫逻辑端口。而大家所理解的网线口,其实是物理端口。
3.定义通信规则。这个通信规则称为“协议”。国际组织定义了通信协议TCP/IP;

 

 

本地IP地址:127。0.0.1
进入DOS里面输入:ping 127.0.0.1    可以测试网卡

 

网络模型
     OSi参考模型
     TCP/IP参考模型
网络通讯要素
     IP地址
     端口号
     传输协议

 

 

IP地址
    网络中设备的标识
    不易记忆,可用主机名
    本地回环地址:127.0.0.1   主机名:localhost
端口号
    用于标识进程的逻辑地址,不同进程标识
    有效端口:0--65535  其中0--1024系统使用或保留端口

传输协议
    通讯的规则
    常见协议:TCP,  UDP

 


想要获取指定的主机名来得到对应的IP地址
InetAddress ia=InetAddress.getByName("
www.baidu.com");
输出IP地址:ia.getHostAddress();
输出主机名:ia.getHostName();

 

TCP/IP和UDP的区别
UDP
       将数据及源和目的封装成数据包中,不需要建立连接每个数据包的大小限制在64K内因无连接,是不可靠协议不需要建立连接,速度快

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

      (三次握手:
                     第一次:a问b,你在吗?我可以给你发数据吗?
                     第二次:b和a,是的,我在,你发吧
                     第三次:a接到回复,嗯好,把数据开始发给b了
      )

 

 URL
       类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。

构造函数:
       public URL(String protocol,String host,int port,String file)
方法:
        String getFile()
                  获取此 URL 的文件名。
        String getHost()
                  获取此 URL 的主机名(如果适用)。
        String getPath()
                  获取此 URL 的路径部分。
        int getPort()
                  获取此 URL 的端口号。
        String getProtocol()
                  获取此 URL 的协议名称。
        String getQuery()
                  获取此 URL 的查询部

 

Socket:
       Socket就是为网络服务提供的一种机制
       通信的两端都有socket
       网络通信其实就是socket之间的通信
       数据在两个socket间通过IO传输。


            构造函数:
            Socket(InetAddress address,int port)
                                  创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
            Socket()
                                   通过系统默认类型的 SocketImpl 创建未连接套接字。
            用法
            public InetAddress getInetAddress()
                                   返回套接字连接的地址。
            public InputStream getInputStream()
                                   返回此套接字的输入流。
            public int getPort()
                                   返回此套接字连接到的远程端口


UDP发送端
public void main(String[] args) throws Exception
{
     //1.创建UDP,通过DatagramSocket对象
     DatagramSocket ds = new DatagramSocket();
     //2.确定数据,并封装层数据包
     byte[] buf = "upd itcast".getbytes();
     DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.1"));
     //3.通过socket服务,将已有的数据包发送出去,通过send()方法
     ds.send(dp);
     //关闭资源
     ds.close();
}

 

UDP接受端
public static void main(String[] args)
{
 //1.创建UDP socket服务
 DatagramSocket ds = new DatagramSocket(10000);
 //2.定义数据包,用于存储数据包。
 byte[] buf = new byte[1024];
 DatagramPacket dp = new DatagramPacket(buf,buf.length);
 //3.通过服务的receive方法将收到数据存入数据包中。
 ds.receive(dp);
 //4.通过数据包的方法获取其中的数据。
 String ip = dp.getAddress()getHostAddress();
 String data = new String(dp.getData,0,dp.getLength());
 int port = dp.getPort();
 System.out.println(ip+"::"+data+"::"+port);
 //5.关闭资源
 ds.close();
}

 

TCP传输
      用到的两个类:Socket(客户端)和ServerSocket(服务器端)。Socket套接字在客户、服务器通信模型中扮演着十分重要的角色,它就如同服务器和客户端的代理,完成双方应用程序的发送和接收数据的任务。客户建立和服务器链接创建了Socket,服务器一旦接收客户的链接请求也返回一个Socket ,之后两个Socket就可以收发数据了;ServerSocket它提供了灵活的构造函数来创建ServerSocket对象,该对象负责在服务器端监听客户端请求。
      public ServerSocket()
                                  不带参数的构造方法,它不与任何端口绑定,这样创建的对象无法直接调用accept()方法类来监听接入的访问,必须绑定一个服务器端口,客户端程序才可以访问到服务器程序。       
            public ServerSocket(int port)
                                   该构造函数创建了一个带端口参数的ServerSocket对象,默认的服务器地址是本机的IP地址。
             public Socket accept()
                                  侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞。
             public void close()
                                   关闭此套接字。

 

 

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值