java 网络编程

一、网络编程的基本知识

1、TCP,传输控制协议(Transmission Control Protocol),面向连接通信的协议。可靠的无错的数据传输。

2、UDP,用户数据报协议(User Datagram Protocol),无连接的通信协议。不保证可靠数据的传输,但能够向若干个目标发送数据。

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

为通信协议提供的编程类位于java.net包中。

DatagramSocket类用于UDP通信。

ServerSocket类用于TCP通信的服务器端。

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

二、UDP网络程序

1、DatagramSocket类

构造函数:

   public DatagramSocket()

   public DatagramSocket(int port)

   public DatagramSocket(int port,inetAddress laddr)

   第一个构造函数创建DatagramSocket对象,没有指定端口号,系统自动分配一个没有被其他网络程序所使用的端口号。

   第二个构造函数创建DatagramSocket对象,我们自己指定端口号。

   第三个构造函数创建DatagramSocket对象,指定了端口号,还指定了相关的IP地址。(适用于多块网卡)

   close方法

   send(DatagramPacket p)发送数据包

   recieve(DatagramPacket p)接收数据包

2、DatagramPacket 类

构造函数:

   public DatagramPacket (byte buf,int length)

   public DatagramPacket (byte buf,int length,InetAddress address,int port)

   第一个构造函数只指定了数据包的内存空间和大小。

   第二个构造函数指定了数据包的内存空间和大小,还指定了数据包的目标地址和端口号。

在接受数据时没有办法事先知道那个地址和端口的Socket会给我们发来数据,所以应该用第一个构造函数来创建接收数据的DatagramPacket对象。在发送数据时,应该指定接受数据的Socket的地址和端口号,要用第二个构造函数来创建发送数据的DatagramPacket对象。

   getInetAddress和getPort方法

   getData和getLength方法

3、InetAddress类

InetAddress用于表示IP地址的一个类

getByName方法,这个静态方法根据条件返回一个相应的InetAddress实例对象。

getHostAddress方法,可以返回InetAddress对象中包装的、用“.”分割的IP地址。

三、最简单的UDP程序

发送程序:UdpSend.java

 

接收程序:UdpRecv.java

 

四、用UDP编写网络聊天程序

步骤:1、编写图形用户界面;2、编写网络消息发送功能;3、编写网络消息接收功能。

 

五、TCP网络程序的工作原理

1、TCP客户端程序于TCP服务器端程序的交互过程

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

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

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

(4)、建立了连接的两个Socket在单独的线程(由服务器程序建立)。

(5)、服务器开始等待新的连接请求,当新的连接请求到达时重复(2)到步骤(5)的过程。      
   构造函数:
       ServerSocket类:
             public ServerSocket()
             public ServerSocket(int port)
             public ServerSocket(int port,int backlog)
             public ServerSocket(int port,int backlog,InetAddress bindAddr)
             accept()
       Socket 类:
             public Socket()
              public Socket(String host,int port)
              public Socket(InetAddress address,int port)
              public Socket(String host,int port,InetAddress localAddr,int localPort)
              public Socket( InetAddress address ,int port,InetAddress localAddr,int localPort)
             getInputStream()和getOutputStream()方法

 

 

close方法,accept方法

2、Socket类

getInputStream和getOutputStream方法

3、简单的TCp服务器程序

1、ReReverseServer.java

 

2、Servicer.java

 

 

TCP服务器程序模型的辨析要点:

1、TCP服务器程序要想能接受多个客户端连接,需要循环调用ServerSocket.accept方法。

2、服务器程序与每个客户端连接的回话过程不能互相影响,需要独立的线程中运行。

3、一个线程服务对象与一个服务器端Socket对象相关联,共同完成与客户端的会话。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值