网络编程

2019-01-02  本文已影响0人  啦啦啦_9a5f

一、InetAddress

java.net包下,此类表示互联网协议(IP)地址

static InetAddress getByName(String host)//根据主机名或者IP地址获取相关信息

关键在于如何获取InetAddress对象

二、使用UDP协议发送对象

1.创建发送端Socket对象

DatagramSocket:此类用来发送和接受数据报包的套接字,基于UDP协议

(1)DatagramSocket():创建Socket对象并随机分配端口号

DatagramSocket ds = new DatagramSocket();

(2)DatagramSocket(int port ):创建Socket对象并指定端口号

2.创建数据并打包

DatagramPacket:此类表示数据报包

数据byte[]

设备地址IP

进程的地址:端口号

DatagramPacket(byte[] buf,int length,InetAddress address,int port)

3.发送数据

ds.send(p);

4.释放资源

ds.close();

三、UDP接收数据

1.创建接收端Socket对象

DatagramSocket ds = new DatagramSocket(8888);

2.接收数据

byte[] bys = new byte[1024];

DatagramPacket dp = new DatagramPcket(bys,bys.length);

ds.receive(dp);//阻塞

3.解析数据

//InetAddress getAddress():获取发送端的IP对象

InetAddress address = dp.getAddress();

//byte[] getData():获取接收到的数据,也可以直接创建包对象时的数组

byte[] data = dp.getData();

//int getLength():获取具体收到的字节个数

int length = dp.getLength();

4.输出数据

System.out.println("sender---->" + address.getHostAddress());

System.out.println(new String(data,0,length));

5.释放资源

dp.close();

UDP协议收发数据的注意事项: 端口号错误,数据可以正常发出,不会出现异常,但是收不到数据

四、使用TCP发送数据

1.创建发送端Socket对象(创建连接)

Java.net.Socket实现客户端套接字

Socket(InetAddress address,int port)

Socket s = new Socket(InetAddress address,int port)

2.获取输出流对象

OutputStream os = s.getOutputStream();

3.发送数据

String str = "hello tcp";

os.write(str.getBytes());

4.释放资源

s.close();

四、TCP接收端

1.创建接收端Socket对象

Java.net.ServerSocket

ServerSocket(int port);

ServerSocket ss = new ServerSocket(10086);

2.监听(阻塞)

ServerSocket中没有关于获取数据的方法

Socket s = ss.accept();

3.接受数据

InputStream is = s.getInputStream();

4.获取数据

byte[] bys = new byte[1024];

int len = is.read(bys);

5.输出数据

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

6.释放资源

s.close();

上一篇下一篇

猜你喜欢

热点阅读