网络-运输层,聊聊怎么传输数据的(协议)

1 篇文章 0 订阅

先来个段子哈,好久不写博客,闲事复习复习。

先看下OSI分层的定义,

遵循响应协议主要两个UDP 和TCP,传输层通常以TCP和UDP协议来控制端点到端点的通信。用于通信的端点是由Socket来定义的,Socket是由IP地址和端口号组成的。传输控制协议(TCP)是在端点与端点之间建立持续的连接而进行通信。

TCP协议具有可靠性和有序性,并且以字节流的方式发送数据。主要说说TCP的编程。





大概有三步,

1.建立Socket

2.在客户端和服务器端同时打开输入/输出流

3.关闭输入/输出流和Socket

简单的服务端代码

{
    //服务端socket
    ServerSocket socket = null;

    try {
        socket = new ServerSocket(1234);
        System.out.println("Server started!!!");
    } catch (IOException e) {
        e.printStackTrace();
    }
    while (true) {

        try {
            Socket socket1 = socket.accept();
            System.out.println("Client connected!!!");
            OutputStream s1out = socket1.getOutputStream();
            BufferedOutputStream bw = new BufferedOutputStream(s1out);
            ObjectOutputStream oos=new ObjectOutputStream(bw);
            oos.writeObject("Hello Net World!\n");
            oos.close();
            bw.close();
            socket1.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

客户端

 try
        {
            Socket s1 = new Socket("127.0.0.1", 8123);
            InputStream is = s1.getInputStream();
            ObjectInputStream ois=new ObjectInputStream(is);
            System.out.println(ois.readObject());
            ois.close();
            s1.close();
//            OutputStream s1out = s1.getOutputStream();
//            BufferedOutputStream bw = new BufferedOutputStream(s1out);
//            ObjectOutputStream oos=new ObjectOutputStream(bw);
//            oos.writeObject(new Student(25,"lht",28,"itT"));
//            oos.writeObject("HelloNetWorld");
//            oos.close();
//            bw.close();
//            s1.close();

        }
        catch (ConnectException connExc)
        {
            System.err.println("Could not connect to the server.");
        }
        catch (IOException e)
        {
        }
        catch (Exception eee)
        {
        }

TCP编程-多线程服务器实现

 将服务器写成多线程的,不同的处理线程为不同的客户服务。主线程只负责循环等待,处理线程负责网络连接,接收客户输入的信息。
while (true)
{
     accept a connection ;
     create a thread to deal with the client ; 

}end while 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值