java网络编程

本文介绍了Java网络编程的基础概念,包括TCP/IP模型、网络通讯要素等,并详细讲解了TCP和UDP两种传输协议的特点及其在Java中的应用。通过示例代码演示了如何使用Socket类建立TCP客户端和服务端,以及如何使用DatagramSocket类实现UDP通信。


java网络编程

 

网络编程就是指控制Socket,Socket是为网络服务提供的一种机制

 

网络模型

•  OSI参考模型

•  TCP/IP参考模型

 

网络通讯要素

•  IP 地址

•  端口号

•  传输协议

TCP和UDP

 

UDP

•  将数据及源和目的封装成数据包中,不需要建立连接

•  每个数据报的大小在限制在64k 内

•  因无连接,是不可靠协议

•  不需要建立连接,速度快

 

TCP

•  建立连接,形成传输数据的通道。

•  在连接中进行大数据量传输

•  通过三次握手完成连接,是可靠协议

•  必须建立连接,效率会稍低

关于TCP传输:tcp分客户端和服务端,客户端对应的对象是Socket,服务端对应的对象是ServerSocket。因为因为tcp是面向连接的。所以在建立socket服务时,就要有服务端存在,并连接成功。形成通路后,在该通道进行数据的传输。
class TcpClient //tcp传输
{
public static void main(String[] args) throwsException
  
{
    //创建客户端的socket服务。指定目的主机和端口

Socket s = newSocket("192.168.1.254",10003);

    //为了发送数据,应该获取socket流中的输出流。

    OutputStream out = s.getOutputStream();

out.write(" socket demo ".getBytes());


    s.close(); //关闭资源
}
}
接下来就来建立服务端,分为4个步骤:1,建立服务端的socket服务 2,获取连接过来的客户端对象。服务端要使用对应的客户端对象,并获取到该客户端对象的读取流来读取发过来的数据。 4,关闭资源。

class TcpServer
{
  
public static void main(String[] args) throwsException
  
{
    //建立服务端socket服务。并监听一个端口。

    ServerSocket ss = new ServerSocket(10003);

//通过accept方法获取连接过来的客户端对象。
while(true)
    
{
    Socket s = ss.accept();

String ip = s.getInetAddress().getHostAddress();
    System.out.println(ip+"_____connected");

//使用客户端对象的读取流来读取数据。
InputStream in = s.getInputStream();

    
byte[] buf = new byte[1024];
    int len = in.read(buf);

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

s.close();//关闭客户端.
    
}
    
//ss.close();
  
}
}
以上是关于TCP服务端和客户端最基本的建立方式,只有清晰的理解了这些流程,与对以后TCP客户端还有服务端的互访就可以很好理解了,实现客户端和服务端的互访,就是在客户端加了一个读取流对象InputStream in = s.getInputStream();用来接收服务器端的数据,而服务器端则调出来输入流OutputStream out =s.getOutputStream();就这样实现了互访。

UDP网络程序

 DatagramSocket类:

 1、构造函数:

   -publicDatagramSocket()//先发送..

   -publicDatagramSocket(int port)//先接受,后发送..

   -publicDatagramSocket(int port,lnetAddress laddr)

 2、close方法

 3、send(DatagramPacket p)方法

 4、receive(DatagramPacket p)方法

 如果把DatagramSocket比作创建的港口码头,那么DatagramSocket就是发送和接收

 数据的集装箱。

 1、构造函数:

     public DatagramSocket(byte[] buf,int length)

     publicDatagramSocket(byte[] buf,int length,lneAddress address,int port)

 2、getlnetAddress和getPort方法

 3、getData和getLength方法

 ----------

 lnetAddress类

 

 getByName方法

  getHostAddress方法

 ----------

 ServerSocket类

 1.构造函数:

   -publicServerSocket()

   -publicServerSocket(int port)

   -publicServerSocket(int port,int backlog)

   -publicServerSocket(int port,int backlog,InetAddress bindAddr)

 

2/clase方法

 3、accept方法

 -----------

 Socket

1、构造函数

   -public Socket()

   -publicSocket(String host,int port)

   -publicSocket(InetAddress address,int port)

  -publicSocket(String host,int port,InetAddress localAddr,int

 localPort)

   -publicSocket(InetAddress address,int port,InetAddress localAddr,int localPort)

 2、getInputStream和getOutputStream方法

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值