网络编程

1.网络编程介绍

  • 七层协议、四层协议
  • tcp协议,安全但是慢(传输文件)、udp协议,不安全但是快(手机广告短信)
  • ip,局域网中,每台电脑会有自己独立的ip,通过ip可以找到指定的电脑,ipv4、ipv6
  • 端口(port),最大到65535,1024以下不要用,因为是给操作系统准备的
  • localhost代表本地域名,如果想连本地时可以写本地ip,也可以直接写localhost,域名会被转化为ip,如www.baidu.com是域名,会被转为ip,我们通常记域名不记ip
  • ipconfig,查看ip地址
  • ping ip地址 -t,如果要停止,按ctrl+c(通常不用加-t)

2.Socket套接字

java提供了api,Socket:套接字,如果和对方连接成功,会各自获取一个socket对象,socket中有自己和对方的一些信息,可以利用socket对象获取输入输出流并进行数据传输

2.1创建服务器并监听

ServerSocket server = new ServerSocket(7171);
        //监听是否有客户端连接
        System.out.println("监听客户端");
        Socket socket = server.accept();
        System.out.println("客户端连接成功");

2.2创建客户端并连接服务器

Socket socket = new Socket("localhost",7171);
        System.out.println("连接服务器成功");

运行结果如下
在这里插入图片描述
在这里插入图片描述

2.3模拟服务器和客户端进行信息传输

public class Homework02_服务器和客户端 {
    public static void main(String[] args) throws IOException {
        //创建一个服务器  模拟林尼
        ServerSocket server = new ServerSocket(7171);
        //监听是否有客户端连接
        System.out.println("监听客户端");
        Socket socket = server.accept();
        System.out.println("客户端连接成功");

        //接收来自客户端的信息
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        System.out.println(br.readLine());

        //向客户端发送信息
        PrintWriter pw = new PrintWriter(socket.getOutputStream());
        pw.write("你好,旅行者,我是林尼,来自枫丹");
        pw.flush();

        socket.close();
        server.close();
    }
}

//客户端  模拟旅行者
class Client{
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("localhost",7171);
        System.out.println("连接服务器成功");

        //向服务器传输信息
        PrintWriter pw = new PrintWriter(socket.getOutputStream());
        pw.println("你好,林尼,我是旅行者,来自...");
        pw.flush();

        //接收来自服务器的信息
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        System.out.println(br.readLine());

        socket.close();
    }
}

运行结果如下
在这里插入图片描述
在这里插入图片描述
注:
1.br.readLine()也是一个阻塞方法,它会接收换行符
2.socket.getOutputStream().write("hello\r\n".getBytes());也可以这样写数据,但是必须要加换行符,否则另一端收不到

3.三次握手四次挥手

  • UDP:不安全,快,数据可能丢失
  • TCP:数据不丢失

3.1三次握手

在这里插入图片描述
在这里插入图片描述

  • SYN:请求,标志位,同步信号

3.2四次挥手

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值