zoukankan      html  css  js  c++  java
  • TCP通信

    1、TCP概述

    TCP(Transmission Control Protocol):传输控制协议,是一种面向连接的协议。

    TCP不同于UDP,TCP严格区分客户端和服务器端,在通信时,必须先由客户端去连接服务器端才能实现通信,服务器端不可以去主动连接客服端,并且服务器端程序需要事先启动,等待客户端的连接。

    在jdk中提供了两个类用于实现TCP程序,一个是ServerSocket类,用于表示服务器端,一个Socket类,用于表示客户端。

    通信时,首先创建代表服务器端的ServerSocket对象,该对象相当于开启一个服务,并等待客户端的连接,然后创建代表客户端的Socket对象向服务器发送连接请求,服务器端相应请求,两者建立开始通信。

    2、ServerSocket

    ServerSocket类的构造方法:

    ServerSocket(int port):创建绑定到特定端口的服务器套接字。

    常用方法:

    Socket accept():侦听并接受到此套接字的连接。

    InetAddress getInetAddress():返回此服务器套接字的本地地址。

    3、Socket

    Socket类构造方法:

    Socket(String host, int port):创建一个流套接字并将其连接到指定主机上的指定端口号。

    Socket(InetAddress address, int port):创建一个流套接字并将其连接到指定IP地址的指定端口号。

    常用方法:

    • int getPort():返回一个int类型对象,该对象是Socket对象与服务器端连接的端口号
    • InetAddress getLocalAddress():用于获取Socket对象绑定的本地IP地址,并将IP地址封装成InetAddress类型的对象返回。
    • void close():关闭Socket连接,结束本次通信。在关闭Socket之前,应将Socket相关的所有的输入/输出流全部关闭。
    • InputStream getInputStream():返回一个InputStream类型的输入流对象,如果该对象是由服务器端的Socket返回,就用于读取客户端发送的数据,反之,用于读取服务器端发送的数据。
    • OutputStream getOutputStream():返回一个OutputStream类型的输出流对象,如果该对象有服务器端的Socket返回,就用于向客户端发送数据,反之,用于向服务器端发送数据。

    4、TCP网络程序

    服务器端

     1 package tcp;
     2 
     3 import java.io.IOException;
     4 import java.io.OutputStream;
     5 import java.net.ServerSocket;
     6 import java.net.Socket;
     7 
     8 /**
     9  * <p>Description:TCP通信服务器端 </p>
    10  * @author Administrator
    11  * @date 2018年11月6日下午4:06:33
    12  */
    13 public class TCPServer {
    14 
    15     public static void main(String[] args) throws IOException {
    16         // 创建服务器ServerSocket对象(指定服务器端口号)
    17         ServerSocket ss = new ServerSocket(8888);
    18         // 开启服务器了,等待客户端连接,连接后可以获取服务器端的客户端Socket对象
    19         Socket s = ss.accept();
    20         // 获取客户端的输出流
    21         OutputStream os = s.getOutputStream();
    22         // 在服务器端,通过客户端的输出流写数据给客户端
    23         os.write("连接服务器成功".getBytes());
    24         // 关闭资源
    25         os.close();
    26     }
    27 
    28 }

    客户端

     1 package tcp;
     2 
     3 import java.io.IOException;
     4 import java.io.InputStream;
     5 import java.net.Socket;
     6 import java.net.UnknownHostException;
     7 
     8 /**
     9  * <p>Description:TCP通信客户端 </p>
    10  * @author Administrator
    11  * @date 2018年11月6日下午4:14:21
    12  */
    13 public class TCPClient {
    14 
    15     public static void main(String[] args) throws UnknownHostException, IOException {
    16         // 创建客户端Socket对象(要指定连接服务器地址与端口号)
    17         Socket s = new Socket("192.168.247.1", 8888);
    18         // 获取服务器端反馈回来的信息
    19         InputStream is = s.getInputStream();
    20         // 获取流中的数据
    21         byte[] buffer = new byte[1024];
    22         // 把流中的数据存储到数组中,并记录读取字节的个数
    23         int length = is.read(buffer);
    24         // 显示数据
    25         System.out.println(new String(buffer, 0, length));
    26         // 关闭资源
    27         is.close();
    28         s.close();
    29     }
    30 
    31 }
  • 相关阅读:
    Java调用wcf
    登录重构小记
    从零打造一个Web地图引擎
    Vue动态组件的实践与原理探究
    揭开Vue异步组件的神秘面纱
    使用vue实现排序算法演示动画
    C#转义字符
    asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!)
    页面关闭事件onbeforeunload 记录
    执行一段sql
  • 原文地址:https://www.cnblogs.com/alphajuns/p/9916027.html
Copyright © 2011-2022 走看看