博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java学习——网络编程之TCP
阅读量:3941 次
发布时间:2019-05-24

本文共 2056 字,大约阅读时间需要 6 分钟。

Java学习——网络编程之TCP

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内 [1] 另一个重要的传输协议。

TCP与UDP区别总结:

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。
3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
4.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP对系统资源要求较多,UDP对系统资源要求较少。

下面我们来看看TCP编程代码:

服务端:

public class Server {    //服务端    public static void main(String[] args) throws IOException {        //1.暴露端口        ServerSocket serverSocket = new ServerSocket(9999);        //2.循环接收数据        while (true){            //等待客户端连接            System.out.println("等待客户端连接。。。");            Socket accept = serverSocket.accept();            System.out.println("客户端已经连接。。。");            //获取客户端输入的数据,即获取通道中的流            InputStream inputStream = accept.getInputStream();            //包装流            DataInputStream dataInputStream = new DataInputStream(inputStream);            //循环读取流中的数据            while (true){                String s = dataInputStream.readUTF();                if ("exit".equals(s)){                    System.out.println("客户端已下线。。。");                    break;                }                System.out.println("客户端给你发来消息:"+s);            }        }    }}

客户端:

public class Client {    //客户端    public static void main(String[] args) throws IOException {        //1.与服务端建立连接,设置服务端ip和端口        Socket socket = new Socket("127.0.0.1",9999);        //2.循环发送数据        while (true){            //获取通道中的流            OutputStream outputStream = socket.getOutputStream();            //包装流            DataOutputStream dataOutputStream = new DataOutputStream(outputStream);            //发送数据            Scanner scanner = new Scanner(System.in);            System.out.println("请输入你要给客户端发送的消息:");            String s = scanner.nextLine();            dataOutputStream.writeUTF(s);            if ("exit".equals(s)){                break;            }        }    }}

转载地址:http://hxiwi.baihongyu.com/

你可能感兴趣的文章
完整ASCII字符表(转)
查看>>
jquery事件重复绑定解决办法
查看>>
jQuery.extend 函数详解
查看>>
mysqli_query和mysql_query有何区…
查看>>
mysqli->multi_query()多条语句的…
查看>>
php引用(&)变量引用,函数引用,对…
查看>>
[转]yii执行流程(一 目录文…
查看>>
无需重启服务器让系统环境变量生效…
查看>>
配置CakePHP
查看>>
JQuery中$.ajax()方法参数详…
查看>>
JS 简易滚动条
查看>>
PHP __call()方法
查看>>
JS中的call()和apply()方法
查看>>
慎用PHP$_REQUEST数组
查看>>
详细解释PHP中header
查看>>
php中的迭代器Iterator的具体用法
查看>>
mysql操作技巧随笔--链表删除数据
查看>>
MySql在建立索引优化时需要…
查看>>
Mysql建表和索引使用规范
查看>>
mysql 队列 实现并发读
查看>>