基于TCP协议的通信程序

1.什么是TCP协议?

     TCP--传输控制协议[有连接的协议]
    优点:保证数据安全可靠
    缺点:消耗大,效率低

2.TCP协议三次握手

TCP协议在通信的时候,要求通信的双方先建立起连接(面向有连接的协议)。在建立连接的过程中需要经过三次握手才能完成连接的建立。
    参考图片1.png
    第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。【Client给Server发送创建连接的请求】

第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。 【Server被Client发送响应信息】

    第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
    【Client给Server发送确认信息】

3.建立基于TCP的网络通讯程序需要使用的类和常用方法?

    上面建立基于TCP的网络通讯程序需要两套程序。
    第一套程序,是建立客户端程序
    java.net.Socket[套接字] 创建基于TCP的通讯程序的客户端对象的java类
    构造方法
    Socket(InetAddress address, int port) 创建流套接字并将其连接到指定IP地址的指定端口号。 
    Socket(String host, int port) 创建流套接字并将其连接到指定主机上的指定端口号。 
    实例方法
    OutputStream    getOutputStream() 返回客户端的输出流。【与服务器的输入流连接】 
    InputStream    getInputStream() 返回客户端的输入流。 【与服务器的输出流连接】 
    void    close() 关闭客户端。

    第二套程序,是建立服务器端程序
    java.net.ServerSocket 创建基于TCP的通讯程序的服务器端对象的java类
    构造方法
    ServerSocket(int port) 创建绑定到指定端口的服务器套接字。
    实例方法
     Socket    accept() 侦听要连接到此套接字并接受它。 【阻塞主线程运行】
    void    close() 关闭服务器。 
    
    客户端程序的开发步骤:
    1.创建客户端对象【Socket】,连接服务器
    2.通过客户端对象【Socket】的getInputStream()    / getOutputStream(),得到输入输出流
    3.通过得到的输入输出流对象调用read()/write()方法完成数据收发。
    4.关闭输入输出流和客户端对象【Socket】。

    服务器端程序的开发步骤:
    1.创建服务器端对象【ServerSocket】,开启服务器
    2.通过服务器端对象【ServerSocket】的accept()方法,获得连接进入服务器的客户端对象【Socket】
    3.连接进入服务器的客户端对象【Socket】的getInputStream()/getOutputStream(),得到输入输出流.
    4.通过得到的输入输出流对象调用read()/wr

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值