有两种类型
IP的分类 (ABCD类)
生活例子:打电话
特性 :连接 稳定
流程
代码例子
class A{
public static void main(String[] args){
//创建socket连接 参数为 ip 和 port
Socket socket = new Socket(InetAddress.getByName("0.0.0.0"),port);
//socket连接成功不报错,可以获取输出流回应服务端
OutputStream os = socket.getOutputStream();
//写入数据
os.write("hello world".getBytes());
//结束输出
socket.shutdownOutput();
//后续结束连接关闭服务
os.close();
socket.close();
}
}
class b{
public static void main(String[] args){
//创建服务器的socket 并开放其端口号
ServerSocket socket = new ServerSocket(port);
//通过服务器的socket监听发过来的连接请求 (阻塞连接)
Socket accept = socket.accept();
//连接成功接收客户端发来的数据
InputStream is = accept.getInputStream();
//I/O读写数据
byte[] buffer = new byte[1024];
int len = 0;
//因不知道数据类型,用管道流接收
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while((len=is.read(buffer))!= -1){
baos.write(buffer,0,len);
}
System.out.print(baos.toString());
}
}
生活例子:发短信
特性:不稳定 单方面
流程:
代码例子
class A{
public static void main(String[] args){
//创建DatagramSocket进行发送
DatagramSocket socket = new DatagramSocket();
//发送需要的内容 参数需要 数据字节数组 数组偏移量 数组长度 IP 端口
byte[] buffer = "hello world".getBytes();
DatagramPacket packet = new DatamgramPacket(buffer,0,buffer.length,InetAddress.getByName("0.0.0.0"),port);
//发送
socket.send(packet);
}
}
class B{
public static void main(String[] args){
//创建DatagramSocket连接 ,并开放其端口
DatagramSocket socket = new DatagramSocket(port);
//需要接收内容的驿站
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer,0,buffer.length);
//接收
socket.receive(packet);
//输出其信息
byte[] data = packet.getData();
System.out.print(new String(data,0,data.length))
}
}
//如:利用url下载网上的资源
Url url = new Url(定位的格式);
//调用url的连接方法获取输入流
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
InputStream fis = connection.getInputStream();
//利用IO输出即可
原文:https://www.cnblogs.com/MoonPiePlane/p/15018305.html