网络编程1

    • 1、什么是TCP协议?UDP协议?区别?

      TCP:传输控制协议,面向连接,可靠。保证数据传输成功。

      UDP:不可靠。传输速度快。占系统资源少。


    2TCP三次握手?

    A——》 通信请求以及序列号作为起始数据段。

    B——》 收到请求,序列号作为起始数据段。

    A——》 收到请求



  • Java网络编程

    服务端套接字:ServerSocketaccept() bind() close()

    客户端套接字:Socket



5:tcp连接建立的时候3次握手,断开连接的4次握手的具体过程

建立连接采用的3次握手协议,具体是指:
第一次握手是客户端connect连接到server,server accept client的请求之后,向client端发送一个消息,相当于说我都准备好了,你连接上我了,这是第二次握手,第3次握手就是client向server发送的,就是对第二次握手消息的确认。之后client和server就开始通讯了。
断开连接的4次握手,具体如下:
断开连接的一端发送close请求是第一次握手,另外一端接收到断开连接的请求之后需要对close进行确认,发送一个消息,这是第二次握手,发送了确认消息之后还要向对端发送close消息,要关闭对对端的连接,这是第3次握手,而在最初发送断开连接的一端接收到消息之后,进入到一个很重要的状态time_wait状态,这个状态也是面试官经常问道的问题,最后一次握手是最初发送断开连接的一端接收到消息之后。对消息的确认。



package com.server;

import java.io.*;
import java.net.*;
public class TalkServer {
    public static void main(String args[]) {
        try{
            ServerSocket server=null;
            try{
                //创建一个ServerSocket在端口4700监听客户请求
                server=new ServerSocket(4700);
            }catch(Exception e){
                e.printStackTrace();//出错,打印出错信息
            }
            Socket socket=null;
            try{
                //使用accept()阻塞等待客户请求,有客户
                socket=server.accept();//请求到来则产生一个Socket对象,并继续执行
            }catch(Exception e){
                e.printStackTrace();//出错,打印出错信息
            }
            String line;
            //由Socket对象得到输入流,并构造相应的BufferedReader对象
            BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
            //由Socket对象得到输出流,并构造PrintWriter对象
            PrintWriter os=new PrintWriter(socket.getOutputStream());
            //由系统标准输入设备构造BufferedReader对象
            BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
            //在标准输出上打印从客户端读入的字符串
            System.out.println("Client:"+is.readLine());
            //从标准输入读入一字符串
            line=sin.readLine();
            //如果该字符串为 "bye",则停止循环
            while(!line.equals("bye")){
                //向客户端输出该字符串
                os.println(line);
                //刷新输出流,使Client马上收到该字符串
                os.flush();
                //在系统标准输出上打印读入的字符串
                System.out.println("Server:"+line);
                //从Client读入一字符串,并打印到标准输出上
                System.out.println("Client:"+is.readLine());
                //从系统标准输入读入一字符串
                line=sin.readLine();
            }
            
            os.close(); //关闭Socket输出流
            is.close(); //关闭Socket输入流
            socket.close(); //关闭Socket
            server.close(); //关闭ServerSocket
        }catch(Exception e){
            e.printStackTrace();//出错,打印出错信息
        }
    }
}

package com.client;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class TalkClient {
    public static void main(String[] args) {
        try{
            //向本机的4700端口发出客户请求
            Socket socket=new Socket("127.0.0.1",4700);
            //由系统标准输入设备构造BufferedReader对象
            BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
            //由Socket对象得到输出流,并构造PrintWriter对象
            PrintWriter os=new PrintWriter(socket.getOutputStream());
            //由Socket对象得到输入流,并构造相应的BufferedReader对象
            BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String readline;
            readline=sin.readLine(); //从系统标准输入读入一字符串
            //若从标准输入读入的字符串为 "bye"则停止循环
            while(!readline.equals("bye")){
                //将从系统标准输入读入的字符串输出到Server
                os.println(readline);
                //刷新输出流,使Server马上收到该字符串
                os.flush();
                //在系统标准输出上打印读入的字符串
                System.out.println("Client:"+readline);
                //从Server读入一字符串,并打印到标准输出上
                System.out.println("Server:"+is.readLine());
                readline=sin.readLine(); //从系统标准输入读入一字符串
            }
            os.close(); //关闭Socket输出流
            is.close(); //关闭Socket输入流
            socket.close(); //关闭Socket
        }catch(Exception e){
            e.printStackTrace();//出错,打印出错信息
        }

    }

}


网络编程的执行顺序:

socket:服务器程序调用socket,创建socket


bind:创建完socket之后就是地址的绑定了

listen:

accept

connect







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值