网络编程

计算机网络


计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

网络编程的目的:
无线电台...传播交流信息,数据交换。通信

 

想要达到这个效果需要什么:
1.如何准确的定位网络上的一台主机192.168.16.124:端口,定位到这个计算机上的某个资源

2.找到了这个主机,如何传输数据呢?

javaweb:网页编程

网络编程:TCP/IP

1.2、网络通信的要素
如何实现网络的通信?
通信双方地址:
  ip
   端口号
  192.168.16,124:5900

规则:网络通信的协议

TCP/IP参考模型:

 

 

 

小结:
1.网络编程中有两个主要的问题
    如何准确的定位到网络上的一台或者多台主机○找到主机之后如何进行通信
2.网络编程中的要素
     IP和端口号
网络通信协议udp, tcp

3.万物皆对象

 

1.3、IP


ip地址: InetAddress


 唯一定位一台网络上计算机-127.0.0.1:本机 localhost ip地址的分类
  ipv4 / ipv6
  lPV4  127.0.0.1,4个字节组成。,0-255,42亿  ; 30亿都在北美,亚洲4亿。2011年就用尽;

   iPv6:128位。8个无符号整数!
    2001: 0bb2: aaaai 0015:0000:0000 :1aaa: 1312!
公网(互联网)-私网(局域网)
ABCD类地址
192.168.xX.xx,专门给组织内部使用的

域名:记忆IP问题!
 IP:www.vip.com

 



mport java.net.InetAddress ;
import java.net. UnknownHostException;


//测IP
public class TestInetAddress {
     public static void main(string [ ]args) {
             try {
//查询本机地址 InetAddress inetAddress1
= InetAddress.getByNome("127.0.0.1"); System.out . print1n(inetAddress1);
                         InetAddress inetAddress3 = InetAddress.getByNome("localahost");

                      System.out . print1n(inetAddress3);
                        InetAddress inetAddress4 = InetAddress.getLocalHost();

                      System.out . print1n(inetAddress4);
                    //查询网络IP地址
                   InetAddress inetAddress2 = InetAddress.getByName( "www.baidu.com"); 
System. out. print1n(inet
&ddress2);

                //常用方法
               //System.out.println(inetAddress2.getAddress( ));
                 System.out.print1n(inetAddress2.getcanonicalHostName( ));//规范的名字

                  System.out.println(inetAddress2.getHostAddres( ));//IP
System.out.println(inetAddress2.getHostName();//域名或者自己电脑名字

}
catch (UnknownHostException e);
e.printstackTrace( ) ;
}
}
}

 

 

 

1.4、端口


端口表示计算机上的一个程序的进程;
  不同的进程有不同的端口号!用来区分软件!·被规定0~65535
  TCPUDP: 65535 * 2 tcp: 80,udp: 80吗,单个协议下,端口号不能冲突·

   端口分类
   公有端口0-1023
    HTTP :80

   HTTPS : 443

    FTP: 21

   Telent : 23


  程序注册端口:1024~49151,分配用户或者程序
    Tomcat: 808o
    MysQL : 3306.

   Oracle: 1521

动态、私有:49152~65535
   
   netstat -ano #查看所有的端口
   netstat -ano lfindstr " 5900”#查看指定的端口

   tasklist|findstr "8696”#查石指定端I 的进程

   ctr1+ shift + ESC#打开任务管理器

import java.net.InetsocketAddress;
public class TestInetsocketAddress {
public static void main( string[args ) {
          InetSocketAddress socketAddress = new InetSocketAddress ( hostname: “127.0.0.1",port: 8080);
         InetSocketAddress socketAddress2 = new InetSocketAddress( hostname:"localhost", port: 8e80);
        System.out.print1n(socketAddress );
       System.out. println(socketAddress2);


       System.out.println(socketAddress-getAddress()) ;
       System.out. printin(socketAddress-getHostName());//地址                                                                        
       System.out.println(socketAddress.getPort());//端口
      }
}

 

 

 

 

 

 

 

1.5、通信协议


  协议:约定,就好比我们现在说的是普通话。
  网络通信协议:速率,传输码率,代码结构,传输控制.....

     问题:非常的复杂?
    大事化小:分层!
  TCP/IP协议簇:实际上是一组协议

 重要:
 TCP:用户传输协议.

  UDP:用户数据报协议

  出名的协议:
   TCP:
    IP:网络互连协议
 

 

 

 


TCP udp对比

TCP:打电话·

连接,稳定

三次挥手,四次握手!!!!!

客户端、服务端
·传输完成,释放连接,效率低

UDP:发短信
不连接,不稳定
客户端、服务端:没有明确的界限·

不管有没有准备好,都可以发给你..

 导弹
   DDos :洪水攻击!(饱和攻击)


1.6、TCP


客户端
1.连接服务器Socket

2.发送消息

服务器
1.建立服务的端口ServerSocket

2.等待用户的链接accept
3.接收用的消息

 

 

 

import java.io.Outputstream;

import java.net.InetAddress;

import java.net.Socket;
import java.net.unknowinHostException;
//客户端
public class Tepc1ientDemoe1 {
public static void main(string[] args) i
try {
       //要知道服务器的地址、端口号
        InetAddress serverIP = InetAddress.getByName("127.0.0.1");

       int port = 9999;
     / /2.创建一个socket连接
     Socket socket = new Socket( serverIP , port);


      //3.发送消息IO流
       outputstream os = socket.getOutputStream();

       os.write(你好,欢迎学习狂神说.Java".getBytes( );
        }catch (Exception e){
          e.printstackTrace( );
        }
   }

}

 

 

 

import java.io.IOException;

import java.net.ServerSocket;

import java.net. Socket;
//服务端
publie class TepserverDemoe1 {
   public statie void main(String[] args) {
     try// 1.我得有一个地址
              Serversocket serversocket = neu ServerSocket( port: 9999) ;

           //2.等待客户端连接过来
           Socket accept- serverSocket. accept();

             //3.读取客户端的消息
           InputStream is = socket.getInputStream() ;
                      /*
                          byte[] buffer = new byte[1024];

                                  int Len;
                                while ((Len=is .read(buffer) )!=-1){
                                   String msg = new String( buffer, 0, len);

                           System . out.printLn( msg );
                               }
                       */
             //管道流
             ByteArrayOutputStream baos = new ByteArrayoutputstream( );

            byte[ ] buffer = newr byte[ 1024];
            i nt ien;
          while i i len=is.read( buffer) )!=-1){
              baos.write( buffer, off: 0,len) ;
         }
           System.out.println(baos.toString( ) );
          }catch (IOException e) {
           e.printstackTrace();

            }finally {
                  //关闭资源
          }

       }
}

 

 

Tomact

服务端
·自定义S
Tomcat服务器S : Java后台开发!

客户端
·自定义

浏览器B

 

 

1.7、UDP
发短信:不用连接,需要知道对方的地址!

 

1.8、URLhttps://www.baidu.com/
统一资源定位符:定位资源的,定位互联网上的某一个资源

DNS域名解析www.baidu.com xXx.X..X..X
            协议://IP地址:端口/项目名


 

posted @ 2021-07-19 18:49  苹果你个大番茄  阅读(59)  评论(0)    收藏  举报