第二阶段

第九讲 网络编程

  

网络协议与TCP/IP     本地回路IP172.0.0.1  用于本地计算机使用   ping 172.0.0.1

IP地址和Port(端口号)  端口号的范围0~65535   0~1023为知名网络服务和应用

 IPv4  IPv6

  

 Cmd中显示IP   ipconfig/all

TCP: 传输控制协议  Transmission Control Protocol   面向连接 可靠的无差错的传输

UDP:用户数据报协议 User Datagram Protocol, 无连接不可靠传输

数据帧格式:

    

协议类型

IP

目标IP

源端口

目标端口

帧序号

帧数据

Java中的网络编程类

Socket是网络驱动层提供给应用程序编程的接口和一种机制。

可以把Socket比喻成是一个港口码头。应用程序只要把货物放到码头,就算完成了货物的运送。应用程序只需等待货物到达码头后,将货物取走。

Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的ipPort

Socket数据发送过程

1应用程序产生Socket2同时调用bindSocket的信息通知给驱动程序,3应用程序将要发送的数据传给Socket4驱动程序从Socket取出数据并通过网卡发送出去。

Socket数据接收过程

1应用程序产生Socket2同时调用bindSocket的信息通知给驱动程序,3驱动程序根据从网卡传送来的数据报中的指定目标端口号将处理后的数据传送到相应的Socket中,3应用程序从Socket中取数据。

java中的网络编程类      位于java.net包中

       DatagramSocket类用于UDP通信

       ServerSocket类用于TCP通信的服务端

Socket类用于TCP通信的服务器和客户端

     UDP网络程序

            DatagramSocket

                     构造函数:public DatagramSocket();

                               Public DatagramSocketint port);

                               Public DatagramSocketint portinetAddess la d dr

                     Close方法:// 关闭Socket函数对象,系统重新分配port

                     SendDatagramSocket p)方法//发送数据包

                     ReceiveDatagramSocket p)方法//接收数据包

DatagramPacket

    构造函数:public DatagramPacket(byte[]buf,int length)  //接收数据时候用public DatagramPacket(byte[]buf,int length,inetAddress address,int port)//接收时用

     GetlnetAddressgetPort方法

     GetDatagetLength方法

InetAddress

         用于表示IP地址的一个类

         GetByName方法

         GetHostAddress方法//返回IP地址

UDP编写网络聊天程序

       步骤:1.编写图形用户界面

             2.发送功能

             3接收功能

import java.net.*;

public class UdpSend{

 DatagramSocket ds=new DatagramSocket();

String strInfo="hello www.itcast.cn";

ds.send(newDatagramPacket(strInfo.getByte(),strInfo.length(),InetAddress.getByName("192.168.0.3"),3000));

ds.close();

}

}

接收程序:

import java.net.*;

public class UdpRecv{

 public static void main(String[] args){

           DatagramSocket ds=new DatagramSocket(3000);

 byte[] buf=new byte[1024];

        DatagramPacket dp=new DatagramPacket(buf,1024);

 ds.receive(dp);

 String strInfo=new String(dp.getData(),0,dp.getLength())+"from"+dp.getAddress().getHostAddress()+":"+dp.getPort();

 System.out.println(strInfo);

 ds.close();

}

}

TCP网络程序

  工作原理:交互过程  

1)服务器程序创建一个ServerSocket,然后调用accept方法等待客户来连接。

2)客户端程序创建一个Socket并请求与服务器建立连接

3)服务器接收客户的连接请求并创建一个新的Socket与该客户建立专线连接

4)建立了连接的两个Socket在一个单独的线程上对话

5)服务器开始等待新的连接请求,当新的连接请求到达时重复2~5过程

TCP程序例:

import java.net.*;

import java.io.*;

public class TcpServer

{

public static void main(String[] args)

{

ServerSocket ss=new ServerSocket(8001);

Socket s=ss.accept();

InputStream ips=s.getInputStream();

OutputStream ops=s.getOutputStream();

ops.write("welcome to www.itcast.cn".getByte());

byte[] buf=new byte[1024];

int len=ips.read(buf);

System.out.println(new String(buf,0,len));

ips.close();

ops.close();

s.close();

.close();

}

}

   ServerSocket

      构造函数:

         Public ServerSocket()

Public ServerSocketint port

Public ServerSocketint portint backlog

Public ServerSocketint portint backloglnetAddress bindaddr

Close方法//释放资源

Accept方法//等待客户端的连接请求,返回对象

     Socket

       构造函数

         Public  Socket()//不能直接使用

Public  SocketString host ,int port

Public  SocketlnetAddress address,int port,)

Public  SocketString host ,int port , lnetAddress localAddr,int localPort

Public  SocketlnetAddress address, ,int port , lnetAddress localAddr,int localPort

       GetlnputStreamgetOutputStream方法

                 TCP服务器程序

                     TCP服务器程序必须先启动运行,才能连接上

使用Telnet程序测试TCP服务器程序

                     使用BufferedReader包装类,从网络输入流中一次读取一行文本

        TCP服务器程序要想能接收多个客户连接,要循环调用ServerSocket.accept方法

        会话过程不能相互影响

        一个线程服务对象与一个服务器端Socket对象相关联,共同完成会话

  使用netstat命令查看正在使用的TCP端口号

               ObjectInputStream ObjectOutputStream

       

URL  --Uniform Resource Locator

     由 协议,主机名,端口号,资源名组成

     编码规则:将空格转换为加号+

               大小写字母,数字不变   %20也是空格

            其他字符,用当前字符集编码在内存中的十六进制格式,并在内个字节前加%

 Http 消息头 : Connection   Accept-language  Content-length  Range  Content-Range

 URL

构造函数:都可引发MalformedURLException异常

     Public URL(String spec)

     Public URL(String protocol,String host,int port,String file)

Public URL(String protocol,String host,int port,String file,URLStreamHandler handler)

Public URL(URL context,String spec)

getProcol getHost getPort getFile方法

 openConnection方法返回URLConnection对象

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值