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对象相关联,共同完成与客户端的会话。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值