TCP简单介绍

一:TCP简介
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议是同一层内 另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元( MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。
二:示例
TCP是通过socket和serversocket两个类来完成的,这两个类的具体方法在这里就不介绍了,想了解的可以查看api
服务端:
package net.TCP;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
* 服务端serversocket
* @author jaques
*
*/
public class ServerTest {
public static void main(String[] args) throws IOException{
//创建对象,打开端口
ServerSocket ss=new ServerSocket(10000);
//石油accept方法获取客户端连接对象
Socket s=ss.accept();
String ip=s.getInetAddress().getHostAddress();
System.out.println(“客户端的ip:”+ip);
//Socket getInputStream获取字节输入流,读取客户端发来数据
InputStream in=s.getInputStream();
byte[] b=new byte[1024];
int len=in.read(b);
System.out.println(new String(b,0,len));
//Socket getOutputStream获取字节输出流,将数据写回客户端
OutputStream out=s.getOutputStream();
out.write(“收到”.getBytes());
//关闭
ss.close();
s.close();
in.close();

}

}

客户端
package net.TCP;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

/**
* 客户端Socket
* 1.创建Socket服务对象
* 2.Socket对象方法 getOutputStream获取字节输出流
* @author jaques
*
*/
public class SocketTest {
public static void main(String[] args) throws IOException{
//创建socket对象,参数为服务端地址和端口号
Socket s=new Socket(“127.0.0.1”,10000);
//使用Socket对象方法getOutputStream获取字节输出流
OutputStream out=s.getOutputStream();
//写入服务器
out.write(“你好TCP”.getBytes());

    //使用Socket对象方法getInputStream获取字节输入流
    InputStream in=s.getInputStream();
    byte[] b=new byte[1024];
    int len=in.read(b);
    System.out.println(new String(b,0,len));
    //关闭
    s.close();
    out.close();
    in.close();

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值