InetAddress 的实例包含 IP 地址,还可能包含相应的主机名(取决于它是否用主机名构造或者是否已执行反向主机名解析)。
package inetaddreaa; import java.net.InetAddress; import java.net.UnknownHostException; public class InetAddressDom { public static void main(String[] args) { try { //根据本机 InetAddreaa 获取信息 InetAddress address = InetAddress.getLocalHost(); System.out.println("本机名字:" + address.getHostName()); System.out.println("IP地址:" + address.getHostAddress()); System.out.println("对象的原始 IP地址:"+address.getAddress()); //看API文档 } catch (UnknownHostException e) { e.printStackTrace(); } } }
端口:8080
例子:
package url; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; public class URLDom { public static void main(String[] args) { try { //实例化URL URL url= new URL("http://www.baidu.com"); //输入流 InputStream is = url.openStream(); //将输入流转换为字符流 InputStreamReader isr = new InputStreamReader(is,"utf-8"); //为字符流添加缓冲流 BufferedReader br = new BufferedReader(isr); //读取数据 String date = br.readLine(); //输出 行 while( date != null ){ System.out.println(date); date=br.readLine(); } //关闭资源 br.close(); isr.close(); is.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
5.服务器端需继续等待新的连接。
例子:
1、服务器端
package tcp; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String[] args) { try { //1创建服务器,并制定绑定端口 ServerSocket ss = new ServerSocket(8080); //2调用accept()方法侦听并接受的连接。 System.out.println("***服务器已经启动,等待客户端连接***"); Socket sk = ss.accept(); //3获取输入流,获取客户端信息 InputStream is = sk.getInputStream(); //转换字符流 InputStreamReader isr = new InputStreamReader(is); //4为输入流添加缓冲 BufferedReader br = new BufferedReader(isr); //输出 String io=null; //5获取客户端信息 while( (io=br.readLine()) != null){ System.out.println("我是服务器,然后客户端说:" + io); io=br.readLine(); } //关闭输入流 sk.shutdownInput(); //获取输出流,向客户端发送信息 OutputStream ops= sk.getOutputStream(); //打印流 PrintWriter pw = new PrintWriter(ops); pw.write("您好!欢迎您!"); //清空缓冲区数据 pw.flush(); //关闭资源 ops.close(); pw.close(); br.close(); isr.close(); is.close(); sk.close(); ss.close(); } catch (IOException e) { e.printStackTrace(); } } }2、客户端
package tcp; import java.io.*; import java.net.*; //还有一种就是和多线程结合在一起 public class ServerConter { public static void main(String[] args) { try { //创建客户端Socket,指定服务器端口,地址 Socket sr = new Socket("localhost",8080); //获取输出流,向服务器发送信息 OutputStream ops = sr.getOutputStream(); //打印流 PrintWriter pw = new PrintWriter(ops); //字符输出流 pw.write("用户名:陈郑游;密码:123"); //清空缓冲区数据 pw.flush(); //关闭输出流 sr.shutdownOutput(); //获取输入流,读取服务器的信息 InputStream ips = sr.getInputStream(); //InputStreamReader isr = new InputStreamReader(ips); BufferedReader buf = new BufferedReader(new InputStreamReader(ips)); String io=null; //获取客户端信息 while( (io=buf.readLine()) != null){ System.out.println("我是客户端,然后服务器说:" + io); io=buf.readLine(); } //关闭资源 ips.close(); buf.close(); pw.close(); ops.close(); sr.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
例子:
1、服务器端
package udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; public class Server { public static void main(String args[]){ try { /*接收客户端响应*/ //1,创建DatagramSocket,指定端口号。 DatagramSocket socket = new DatagramSocket(8888); //2,创建DatagramPacket。 byte date[] = new byte[1020]; DatagramPacket packet = new DatagramPacket(date, date.length); System.out.println("***服务器已经启动,等待客户端连接***"); //3,接受客户端发送的数据信息。 socket.receive(packet); //接收之前一直堵塞 //4,读取数据。 String info = new String(date, 0, packet.getLength()); System.out.println("我是服务器,客户端说:" + info); // socket.close(); /*向客户端发送响应*/ //1,定义客户端的地址,端口号,数据,发送信息。 InetAddress iass = packet.getAddress(); //地址 int port=8888; byte date2[] ="服务器说:欢迎您!".getBytes(); //转换为字节数组 //2,创建DatagramPacket,包含将要发送的信息。 DatagramPacket packet1 = new DatagramPacket(date2, date2.length, iass, port); //3,创建DatagramSocket。 DatagramSocket soc = new DatagramSocket(); //4,向客户端端发送数据。 soc.send(packet1); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
2、客户端
package udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; public class Socket { public static void main(String[] args) { try { /*向服务器端发送响应*/ //1,定义服务器的地址,端口号,数据, InetAddress inet =InetAddress.getByName("localhost"); //地址 int port=8888; byte date1[] ="用户名:小游;密码:888".getBytes(); //转换为字节数组 //2,创建DatagramPacket,包含将要发送的信息。 DatagramPacket packet = new DatagramPacket(date1, date1.length, inet, port); //3,创建DatagramSocket。 DatagramSocket socket = new DatagramSocket(); //4,向服务器端发送数据。 socket.send(packet); /*接收服务器端的响应*/ byte date2[] = new byte[1020]; //1,创建DatagramPacket。 DatagramPacket packet2 = new DatagramPacket(date2, date2.length); //2,接受服务器端发送的数据信息。 socket.receive(packet2); //3,读取数据。 String info2 = new String(date2, 0, packet2.getLength()); System.out.println("我是客户端,服务器说:" + info2); //4,关闭资源 socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }