IP地址的代表类是InetAddress
UDP通信
客户端 发送端
public class clinet {
public static void main(String[] args) throws Exception {
byte[] buffer = "我来了!".getBytes();
//1、创建待发送的数据包
DatagramPacket packet = new DatagramPacket(buffer,buffer.length, InetAddress.getLocalHost(),8888);
//2、创建发送对象
DatagramSocket socket = new DatagramSocket();
//3、发送数据包
socket.send(packet);
//4、关闭连接
socket.close();
}
}
服务端 接收端
public class server {
public static void main(String[] args) throws Exception {
//1、创建接收的数据包
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer,buffer.length);
//2、创建接收对象
DatagramSocket socket = new DatagramSocket(8888);
//3、接收数据包
socket.receive(packet);
//4、获取发送方的端口和ip
int port=packet.getPort();
InetAddress ip = packet.getAddress();
//5、关闭连接
int len = packet.getLength();
String rs = new String(buffer,0,len);
System.out.println("来自"+ip+":"+port+"的信息:"+rs);
socket.close();
}
}
TCP通信
客户端
public class clinet {
public static void main(String[] args) throws Exception {
//1 创建socket对象
Socket socket = new Socket("127.0.0.1",9999);
//2 从管道获取一个字节输出流
OutputStream os = socket.getOutputStream();
//3 把输出流包装为打印流
PrintStream ps = new PrintStream(os);
//4 发送消息
ps.println("hhh");
ps.flush();
}
}
服务端
public class server {
public static void main(String[] args) throws Exception {
//1 注册端口号
ServerSocket s = new ServerSocket(9999);
//2 等待客户端的连接请求,建立socket管道
Socket socket = s.accept();
//3 从socket管道得到字节输入流
InputStream is = socket.getInputStream();
//4 把字节流包装为输入缓冲字符流
BufferedReader br = new BufferedReader(new InputStreamReader(is));
//5 打印结果
String msg;
if((msg=br.readLine())!=null){
System.out.println(socket.getRemoteSocketAddress()+msg);
}
}
}