1.常用的方法:
1)IP:InetAddress类,该类无构造器,直接调用静态方法。
结果:
2)端口:InetSocketAddress类主要用于封装端口,有对应的构造器,需要声明实例化后才可调用。
结果:
2.TCP通信
TCP分为两部分,一部分为Client端,负责发送消息;另一部分为Server端,负责接收消息,二者主要通过socket套接字编程实现。
Client端:
1)首先实例化inetAddress对象,通过域名获取对应服务器的IP,同时用户需要了解该服务器的通信端口;
2)接下来实例化socket对象,输入的参数为步骤1)中获得的IP和端口,与服务器的socket建立通信;
3)然后通过socket类中的getOutputStream方法获取一个OutputStream数据类型,以此作为发送的消息;
4)接着用OutputStream的write方法把要发送的消息一byte类型发送出去。
5)如果不需要继续监听消息和使用socket,则需要依次调用close方法将这些对象关闭,释放资源。
Server端:
1)首先以特定端口作为输入参数实例化ServerSocket对象,建立socket;
2)调用ServerSocket的accept方法进入监听消息状态;
3)通过socket类中的getInputStream方法获取一个InputStream数据类型(变量),以此作为监听到的消息;
4)建立一个一定大小的byte数组用来作为消息存放的缓冲区;
5)实例化ByteArrayOutputStream对象用来存储接收的消息;
6)当确定缓冲区内消息有效后,将消息存放到步骤5)实例化的对象中,并通过数据类型转换将其打印出来;
7)如果不需要继续监听消息和使用socket,则需要依次调用close方法将这些对象关闭,释放资源。
代码示例:
结果:
3.TCP文件上传
和TCP消息通信类似,主要用到了FileInputStream和FileOutputStream类。另外图片文件相对较大,输出流和输入流要多次通过缓冲区进行IO读写发送和接收。
备注:客户端发送完数据后需要通过shutdownOutput()方法来通知服务器端(或直接关闭socket通信),说明消息发送已停止,否则在单线程中,服务器端会一直处于监听的阻塞状态,无法进行下一步。
代码示例:
4.UDP消息发送
和TCP通信不同,UDP协议没有服务器和客户端之分。UDP通信主要通过DatagramSocket类来建立socket连接,然后通过DatagramPacket来构建数据包,最后通过DatagramSocket的accept()和send()方法来实现消息的接收和发送。
代码实例:
结果:
5.聊天实现
1)实现runnable接口来进行消息接收和发送;
2)区分好消息的源目的端口和目的IP。
实例:
结果:
6.URL下载网络资源
实例:
原文:https://www.cnblogs.com/Kknock/p/14634942.html