Java 网络编程
基本通信架构
- CS架构(客户端/服务端)
- BS架构(浏览器/服务端)
网络通信三要素:IP、端口、协议
本机ip:127.0.0.1 或者localhost
InetAddress类 常用方法

UDP通信
特点:无连接,不可靠通信
java 提供了一个java.net.DatagramSocket类来实现UDP通信
- DatagramSocket 用于创建客户端和服务端


- DatagramPacket 用于创建数据包

TCP通信
特点:面向连接、可靠通信
通信双方会采用“三次握手“方式建立可靠连接,实现端到端通信;
java 提供了一个java.net.Socket类来实现TCP通信
TCP 客户端开发

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| package com.cslb.demo3tcp;
import java.io.DataOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import java.util.Scanner;
public class TcpCilentDemo1 { public static void main(String[] args) throws IOException { Socket socket = new Socket("127.0.0.1",8080);
OutputStream os = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
Scanner scanner = new Scanner(System.in); while(true){ System.out.println("请输入您要发送的话;"); String str = scanner.nextLine(); dos.writeUTF(str); } } }
|
TCP服务端开发

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| package com.cslb.demo3tcp;
import java.io.DataInputStream; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket;
public class TcpServerDemo1 { public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(8080);
Socket socket = server.accept();
InputStream is = socket.getInputStream();
DataInputStream dis = new DataInputStream(is);
System.out.println("ip地址为:" + socket.getInetAddress().getHostAddress() + " 端口号:" + socket.getPort());
while (true) { String str = dis.readUTF(); System.out.println(str); } } }
|