java socket dataoutputstream_java编译

java socket dataoutputstream_java编译一、DatagramSocketDatagramSocket是使用UDP协议的Socket,它的作用是接收和发送数据包,但是它本身并不能产生IO流1、创建DatagramSocket对象Dat

一、DatagramSocket

DatagramSocket是使用UDP协议的Socket,它的作用是接收和发送数据包,但是它本身并不能产生IO流

 1、创建DatagramSocket对象

DatagramSocket()
//创建一个数据包套接字,绑定到本机上任意一个可用的端口

DatagramSocket(DatagramSocketImpl)
//创建一个绑定的数据报套接字, 与指定的datagramsocketimpl相关(一般不使用)
DatagramSocket(SocketAddress)
//通过制定的套接字地址来创建一个数据包套接字
DatagramSocket(int)
//指定本地的一个端口,以此来创建数据包套接字
DatagramSocket(int, InetAddress)
//创建一个DatagramSocket对象,并绑定到指定的地址和端口上

    2、接收和发送数据

    发送数据

public void send(DatagramPacket p) throws IOException  {.....}

  接收数据 

 public synchronized void receive(DatagramPacket p) throws IOException {....}

3、相关方法

   int getLocalPort()  返回绑定到本机套接字的端口

  InetAddress getInetAddress 返回套接字的连接地址

  void close()   关闭该数据报套接字

二、DatagramPacket

 DatagramPacket相当于一个被邮寄的包裹,上面写着收货人的地址,包裹里是所要传递的数据

1、创建DatagramPacket对象

 public DatagramPacket(byte[] buf,int length):以一个空数组来创建DatagramPacket对象,该对象的作用是接收DatagramSocket中的数据。相当于一个缓冲池的作用

 public DatagramPacket(byte buf[], int offset, int length) {} :一一个空的数组来创建DatagramPacket对象,其中 int offset 代表偏移量,int length代表长度(也可以说是池子的容量)

  public DatagramPacket(byte buf[], int offset, int length,  InetAddress address, int port) { 。。。}:创建一个用于发送的DatagramPacket对象,指定发送buf数组中从offset开始,总共length个字节。

DatagramPacket(byte[] buf, int length, InetAddress addr, int port):以一个包含数据的数组来创建DatagramPacket对象,创建该DatagramPacket对象时还指定了IP地址和端口–这就决定了该数据报的目的地。

三、利用DatagramPacket和Datagramsocket简单实现服务器和客户端的通信

 1、创建客户端

     1) 创建客户端 DatagramSocket 类+指定端口 

     2)准备数据 字节数组

     3) 打包 DatagramPacket +服务器地址 以及端口

     4) 发送

    5) 释放资源

2、服务器端

  1)创建服务器 DatagramSocket 类+指定端口

  2)准备接受的容器 字节数组  封装 DatagramPacket

  3)  包接收资源

  4) 分析

  5) 释放资源

简单来说就是服务器先挖一个DatagramPacket的邮箱,时刻准备着接受邮件,客户端这边准备好所要邮寄的东西,写好所要邮寄的地址(DatagramPacket+服务器地址+端口)不然邮递员不知道把邮件往那发送。

java socket dataoutputstream_java编译

代码实现:

服务器端:

package Internet;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class UDP_chat {
public static void main(String[] args) throws IOException {
	//1、 构件服务端 +端口
	
	DatagramSocket server=new DatagramSocket(8888);
	//2、封装成包 DatagramPacket(byte[] buf,int lenth)  相当于构建接受池
	byte[] container=new byte[1024];
	DatagramPacket datagramPacket=new DatagramPacket(container, container.length);
	//接收客户端发来的数据
	server.receive(datagramPacket);
	//获取接收到的数据
	byte [] data=datagramPacket.getData();
	//获取接收到的数据的长度
     int len=datagramPacket.getLength();
    //输出相关的信息
     System.out.println(new String(data,0,len));
     //关闭接收流
     server.close();
}	
}

客户端:

package Internet;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;

public class Udp_chat_client {
	public static void main(String[] args) throws IOException {
		DatagramSocket datagramSocket=new DatagramSocket(9999);
		String meString="扬弟弟";
		byte[] bs=meString.getBytes();
		DatagramPacket datagramPacket=new DatagramPacket(bs, bs.length,new InetSocketAddress("localhost",8888));
		datagramSocket.send(datagramPacket);
		datagramSocket.close();

		
		
	}

}

实现结果:

扬弟弟

 

java socket dataoutputstream_java编译

 

 

 

  

今天的文章java socket dataoutputstream_java编译分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/70383.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注