网络编程1
来源:互联网 发布:华中科技大学软件中心 编辑:程序博客网 时间:2024/05/16 14:10
1、什么是TCP协议?UDP协议?区别?
TCP:传输控制协议,面向连接,可靠。保证数据传输成功。
UDP:不可靠。传输速度快。占系统资源少。
2、TCP三次握手?
A——》B 通信请求以及序列号作为起始数据段。
B——》A 收到请求,序列号作为起始数据段。
A——》B 收到请求
Java网络编程
服务端套接字:ServerSocket。accept() 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
- java网络编程1
- 网络编程基础(1)
- java网络编程1
- 网络编程(1)
- java网络编程(1)
- Java网络编程1
- 网络编程笔记1
- 网络编程(1)
- MFC网络编程1
- socket1.1网络编程
- 网络编程1
- 网络编程1
- 网络编程1
- 网络编程笔记<1>
- socet网络编程1
- 网络编程总结 1
- Java网络编程1
- java网络编程1
- 腾讯安全Sniper战队攻破微软浏览器 Pwn2Own世界总冠军尘埃落定
- 从小到大从直到弯,什么因素在主导手机屏幕的演变?
- 他经历27次牛市和26次熊市、68年无亏损,给了6条投资忠告
- bzoj 1898 [Zjoi2005]Swamp 沼泽鳄鱼 矩阵乘法
- 腾讯“白帽黑客”首夺世界总冠军 中国安全实力比肩苹果微软
- 网络编程1
- Eclipse中启动服务器时报错提示
- RSA/AES加密工具类(Linux/Windows通用)
- Pwn2Own首次采用积分制,腾讯安全sniper战队夺榜首获“世界破解大师”
- 楼兰宝盒:分享是一种态度!
- Java Swing--学生信息管理系统
- “66CPC联盟”恶意传播木马病毒 已被百度封禁
- 接口1
- C++运算符重载----复数的运算