美文网首页
Java网络编程 - TCP传输

Java网络编程 - TCP传输

作者: BlueSkyBlue | 来源:发表于2018-08-09 20:09 被阅读13次

和UDP的发送端与接收端不同,TCP分为客户端和服务端分别对应SocketServerSocket

Socket

实现了客户端套接字,套接字是两台机器间通信的端点
connect(SocketAddress endpoint)方法:可以连接到指定的目的端。
构造方法:
Socket(InetAddress, port)

TCP客户端:

通过查阅Socket对象。发现在该对象建立时就可以连接指定的主机。
因为TCP是面向连接的,所以在建立Socket服务时,就要有服务端存在并连接成功。形成通路后在该通道进行数据的传输。通路一旦建立就会有Socket流。

TCP传输的步骤:

  1. 创建Socket服务并指定要连接的主机和端口。
public static void main(String[] args) throws Exception {
        //创建客户端的Socket服务,指定目的主机和端口。
        Socket s = new Socket("192.168.56.1", 10003);
        //为了发送数据,应该获取Socket流中的输出流。
        OutputStream os = s.getOutputStream();
        os.write("TCP, I am coming.".getBytes());
        s.close();
}

TCP服务端:

定义端点接收数据并打印在控制台上。

  1. 建立服务端的Socket服务。通过ServerSocket建立。ServerScoket会监听端口。
  2. 获取连接过来的客户端对象。使用accept方法。该方法为阻塞式方法。没有连接时就会等。
  3. 客户端如果发过来数据那么服务端要使用对应的客户端对象并获取到该客户端对象的读取流来读取发送过来的数据并打印在控制台。
  4. 关闭服务端(可选操作)。
public static void main(String[] args) throws Exception{
        //建立Socket服务并监听一个端口
        ServerSocket ss = new ServerSocket(10003);
        //通过accept方法获取连接过来的客户端对象
        Socket s = ss.accept();
        //获取客户端发送过来的数据,那么要使用客户端对象的读取流方法
        InputStream ins = s.getInputStream();
        byte [] b = new byte[1024];
        int len = ins.read(b);
        System.out.println("IP:"+s.getInetAddress().getHostAddress());
        System.out.println(new String(b, 0, len));
        //关闭客户端
        s.close();
}

TCP客户端与服务端交互

客户端:

public static void main(String[] args) throws Exception {
        /*
         * 建立Socket服务指定要连接的主机和端口
         * 获取Socket流中的输出流通过网络发送给服务端
         * 获取Socket流中输入流将服务端反馈的数据获取到并打印
         * 关闭客户端资源
         * */
        Socket s = new Socket("192.168.56.1", 10004);
        OutputStream out = s.getOutputStream();
        out.write("Hello, server.".getBytes());
        InputStream in = s.getInputStream();
        byte [] buf = new byte[1024];
        int len = in.read(buf);
        System.out.println(new String(buf, 0, len));
        s.close();
}

服务端:

public static void main(String[] args) throws Exception{
        ServerSocket ss = new ServerSocket(10004);
        Socket s = ss.accept();
        String ip = s.getInetAddress().getHostAddress();
        System.out.println("IP: " + ip);
        InputStream in = s.getInputStream();
        byte [] buf = new byte[1024];
        int len = in.read(buf);
        System.out.println(new String(buf, 0, len));
        
        OutputStream out = s.getOutputStream();
        out.write("Hi,received.".getBytes());
        s.close();
        ss.close();
}

相关文章

  • Java基础09网络编程

    Java 基础08GUI 熟练掌握什么是网络编程,网络编程的三要素,Socket原理机制、UDP传输、TCP传输等...

  • Java网络编程 - TCP传输

    和UDP的发送端与接收端不同,TCP分为客户端和服务端分别对应Socket和ServerSocket。 Socke...

  • Python TCP编程

    Python网络编程之TCP 一、TCP协议 TCP协议,传输控制协议(Transmission Control ...

  • java网络编程常见面试题

    java网络编程面试题 1.TC P和 UDP 的区别 tcp:面向连接的传输控制协议,具有高可靠性,确保传输数据...

  • 网络编程面试题总结

    网络编程知识→ tcp、udp、http、https 等常用协议tcp协议:传输控制协议(TCP,Transmis...

  • socket网络编程-基础知识

    什么是网络编程 网络编程的本质是两个设备之间的数据交换。 Socket、TCP/IP和Udp TCP 传输控制协议...

  • TCP

    聊聊iOS中网络编程长连接的那些事 网络编程基础知识: 简述传输层协议TCP和UDP的区别总结:TCP协议在传送数...

  • TCP服务通讯

    一、TCP 1.TCP又叫做套接字,传输安全,速度慢。 TCP和UTP是网络的传输协议,跟java没什么关系,没有...

  • 6 Java网络编程

    Java 网络编程 OSI 7层模型 物理层、数据链路层、网路层、传输层、会话层、表示层、应用层 Tcp/IP协议...

  • P8架构师告诉你身为程序员必备的技能之一TCP/IP网络编程

    网络编程:操作系统+系统编程知识+TCP/IP网络数据传输协议大部分软件是基于网络环境开发的,因此,网络编程成为程...

网友评论

      本文标题:Java网络编程 - TCP传输

      本文链接:https://www.haomeiwen.com/subject/xvxovftx.html