64.【网络编程】(二)

简介: 64.【网络编程】

三、端口详解

1.端口

端口表示一个程序的进程;

IP 是家属楼,端口是一户
1.不同的进程有不同的端口号,用来区分软件.
2.端口被规定为0~65535个
3.TCP,UDP: 
每一个都有65535,也就是说一共有 65535*2个,单个协议下,端口号不能冲突。TCP与UDP是两个协议
4.端口分类:
(1).公有端口:0~1023;
HTTP :80  HTTPS :443 FTP(远程链接):21 Telent(远程监听) 23 
(2).程序注册端口:1024~49151,分配用户或则程序
Tomcat : 8080 MySQL 3306 Oracle 1521
(3).动态、私有: 49152-65535

查看所有端口

|  端口流
netstat -ano  //查看所有的端口
netstat -ano|findstr "6942"  //查看指定的端口
tasklist|findstr "2460"  //查看2460的端口的进程
基本思路:
1.InetSocketAddress 
2.获取地址
inetSocketAddress_one.getAddress()
3.获取主机名
inetSocketAddress_one.getHostName()
4.获取端口号
inetSocketAddress_one.getPort()
import java.net.InetSocketAddress;
public class Test_InetSocket {
    public static void main(String[] args) {
        InetSocketAddress inetSocketAddress_one = new InetSocketAddress("127.0.0.1", 8080);
        System.out.println(inetSocketAddress_one);
        InetSocketAddress inetSocketAddress_two = new InetSocketAddress("localhost", 8080);
        System.out.println(inetSocketAddress_two);
        //获得主机的地址
        System.out.println(inetSocketAddress_one.getAddress());
        //获得主机的名字(域名)
        System.out.println(inetSocketAddress_one.getHostName());
        //获得主机的端口号
        System.out.println(inetSocketAddress_one.getPort());
    }
}

四、通信协议

1.定义

网络通信协议:速率,传输码率,代码结构,传输控制.....

2.TCP/IP协议(一个集合)

TCP/IP包括:
重要协议:
1.TCP:用户传输协议
2.UDP:用户数据报协议
....
出名的协议:
1.TCP: 用户传输协议
2.IP:网络互联协议

3.TCP与UDP的对比

TCP :  (eg:打电话 对方可拒绝与不可拒绝)
(1).链接稳定
(2).三次握手,四次挥手
请求连接 同意链接 链接
(3).客户端、服务端
(4).传输完成,释放链接,效率低
UDP : (eg:发短信 对方不能拒绝)
(1).不连接.不稳定
(2).客户端、服务端 (没有明确的界限)
(3).不管有没有准备好,都可以发给你.

三次握手:

1.判断两个事务是否连接上:(至少需要三次回应)

A.你瞅啥?

B:瞅你咋地?

A:打一架?

(…)链接成功

四次分手

1.判断两个事务是否断开连接:(需要四次操作)

A:我要走了

B:你真的要走了吗?

B:你真的真的要走了吗?

A我真的走了

(…)断开成功

(五)、TCP

1.TCP实现聊天的项目

Socket:  实现两台主机链接点的中间工具。(链接到指定IP,的端口号)
客户端通过申请链接服务端的端口,从而达到发送消息的模式.
serveSocket: 服务端创建套接字端口与客户端链接(与指定端口)
服务端窗口:
4.获取客户端的端口 通过服务端 套接字
ServerSocket serverSocket = new ServerSocket(9999);
5.等待客户端链接
 Socket socket=serverSocket.accept();
6.读取客户端发送的信息
InputStream is=socket.getInputStream();
7.打印输出
(1).管道流的方法
(2).教学用法
package com.Kuangstudy.Net;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
//服务端
public class TcpClientDem0 {
    public static void main(String[] args) throws Exception{
        //1.我得有一份地址
            ServerSocket serverSocket = new ServerSocket(9999);
        //4.等待客户端链接过来
            Socket socket=serverSocket.accept();
         //5.读取客户端的信息
         InputStream is=socket.getInputStream();
         /*
         //6.设置读取得缓冲区
         byte []buf=new byte[1024];
         //7.设置判断得操作
         int count=0;
         //8.开始进行读取
         while ((count=is.read(buf))!=-1){
             System.out.println(new String(buf,0,count));
         }*/
        //管道流实现读取文件信息
        ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
        //6.设置缓冲区
        byte []buf=new byte[1024];
        int count=0;
        while ((count=is.read(buf))!=-1){
            byteArrayOutputStream.write(buf,0,count);
        }
        System.out.println(byteArrayOutputStream.toString());
        //先开得后关闭
        byteArrayOutputStream.close();
         is.close();
    }
}
客户端窗口:
1.初始化一个IP和端口号
2.创建一个套接字的链接,把IP和端口连接起来
 Socket socket = new Socket(inetAddress,port);
3.利用IO流的输出流进行发送信息
OutputStream os=socket.getOutputStream();
package com.Kuangstudy.Net;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
//客户端
public class TcpClientDem1 {
    public static void main(String[] args) throws Exception {
            //1.要知道服务器的地址,和端口号
            InetAddress inetAddress = InetAddress.getByName("127.0.0.1");
            int port=9999;
           //2.创建一个Socket链接
           Socket socket = new Socket(inetAddress,port);
           //3.发送消息 IO流
           OutputStream os=socket.getOutputStream();
           os.write("你好呀,我是李明".getBytes());
           os.close();
    }
}

管道流的示意图


相关文章
|
4月前
|
消息中间件 Kubernetes 网络协议
网络编程一些问题总结
网络编程一些问题总结
|
2月前
|
域名解析 网络协议 安全
网络编程
网络编程
|
4月前
|
Linux
网络编程之 socket编程
网络编程之 socket编程
29 0
|
7月前
|
网络协议 关系型数据库 MySQL
网络编程初识
网络编程初识
31 0
|
8月前
|
Java C++
4. 网络编程
4. 网络编程
33 0
|
8月前
|
网络协议
64.【网络编程】(一)
64.【网络编程】
25 0
|
8月前
64.【网络编程】(四)
64.【网络编程】
56 0
|
8月前
|
应用服务中间件
64.【网络编程】(三)
64.【网络编程】
24 0
|
9月前
|
网络协议 Oracle 安全
网络编程详细讲解
网络编程详细讲解
54 0