TCP:打电话 连接、通话
UDP:发短信 发完就完事了 接收
如何定位一个网络上的一台主机:ip地址:端口 定位到这个计算机上的某个资源
硬件连接 有线、无线
网页编程 javaweb B/S
网络编程 TCP/IP C/S
如何实现网络的通信?
通信双方地址:
规则:网络通信的协议 TCP、UDP
ip地址:InetAddress
127.0.0.1 本机localhost
ip地址分类
ipv4/ipv6
ipv4 :127.0.0.1 4个字节组成 42亿 亚洲4亿
ipv6 8个无符号整数 128位
1238:abcd:9291:cccc:2819:abcd:7478:bdec
公网-互联网 私网-局域网
InetAddress inetAddress1 = InetAddress.getByName("www.baidu.com"); //getHostName获取域名 //getHostAddress获取ip
端口表示计算机中一个程序的进程
不同的进程有不同的端口号,用来区分软件
规定为0~65536
TCP ,UDP 单个协议下端口号不能相同
端口分类
公有端口0~1023
程序注册端口
动态、私有端口:49152~65535
netstat -ano netstat -ano |findstr "5900" 查找进程
TCP/IP协议 传输层
//客户端 public class C{ psvm{ //获取ip地址 端口号 InetAddress c = InetAddress.getByName("127.0.0.1"); int port=9999; //创建socket连接 Socket socket = new Socket(c,port); //发送消息 OutputStream os = socket.getOutStream(); os.write("你好hahaha".getButes()); //关闭资源 io流 scoket资源 } } //服务端 public class S{ psvm{ try{ //1.创建地址 ServerSocket s = new ServerSocket("9999"); //2.等待连接 Socket socket = serverSocket.accept(); //3.获取服务端消息 InputStream is =socket.getInputStream(); //管道流 ByteArratOutputStream baos = new ByteArratOutputStream(); byte[] = buffer = new byte[1024]; int len; while((len=is.read(buffer))!=-1){ baos.write(buffer,0,len); } System.out.println(baods.toString()); //关闭资源 先开的后关 }catch } }
class C { psvm{ //创建一个连接 Socket socket = new Socket(InetAddresss.getByName("127.0.0.1"),9999); //获取输出流 OutputStream os = socket.getOutputStream(); //获取文件流 FileInputStream fis = new FileInputStream(new File("3/txt")); //写出文件 byte[] buffer = new byte[1024]; int len; while((len=fis.read(buffer))!=-1){ os.write(buffer,0,len); } //关闭资源 fis.close(); os.close(); socket.close(); } } class S{ psvm{ //创建服务 ServerSokcet serverSocket = new ServerSokcet(); //等待连接 阻塞式等待 会一直等待直到客户端连接 Socket socket = serverSocket.accept(); //获取输入流 InputStream is = socket.getInputStream(); //文件输出 FileOutputStream fos = new FileOutputStream(new File("recesive.txt")); byte[] buffer = new byte[1024]; int len; while((len=fos.read(buffer))!=-1){ fos.write(buffer,0,len); } //关闭资源 fos.close(); is.close(); socket.close(); serverSocket.close(); } }
待更新