【Java 网络编程】客户端 Socket 创建

举报
韩曙亮 发表于 2022/01/11 02:36:48 2022/01/11
【摘要】 文章目录 I TCP 无代理或无参构造函数II 创建 Socket 时指定代理III 创建 Socket 时直接指定服务器地址和端口号IV 创建 Socket 时直接指定服务器地址和端口号 并绑定...



I TCP 无代理或无参构造函数



Socket socket = new Socket(Proxy.NO_PROXY);

  
 
  • 1

创建 Socket 对象 , 传入 Proxy.NO_PROXY 参数 , 代表该参数没有代理模式 ; 该构造函数与下面的无参构造方法是等价的 ;

Socket socket = new Socket();

  
 
  • 1


II 创建 Socket 时指定代理



1. 代理构造函数 : 下面是代理创建的构造函数的方法原型 , 其中的 Type type 是代理类型 , SocketAddress sa 是代理的地址和端口号 ;

public Proxy(Type type, SocketAddress sa)

  
 
  • 1

2. 代理类型选择 : DIRECT 指的是直连模式 , 即该模式下没有代理 ; HTTP 代表高层级的协议如 HTTP 或者 FTP 协议 ; SOCKS 代表了 SOCKS4 或 SOCKS5 协议

    /**
     * Represents the proxy type.
     *
     * @since 1.5
     */
    public enum Type {
        /**
         * Represents a direct connection, or the absence of a proxy.
         */
        DIRECT,
        /**
         * Represents proxy for high level protocols such as HTTP or FTP.
         */
        HTTP,
        /**
         * Represents a SOCKS (V4 or V5) proxy.
         */
        SOCKS
    };

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

3. 代理 Socket 示例 : 创建代理 , 并使用代理创建 Socket 示例 ; 通过代理服务器暴露的端口号 , 本地发送的数据先发送到代理服务器上 , 然后通过代理服务器发送和接收数据 ;

        //创建代理对象 , 所有的数据通过
        Proxy proxy = new Proxy(Proxy.Type.HTTP,
        new InetSocketAddress(
        	Inet4Address.getByName("代理服务器地址"), 代理端口号));
        Socket socket = new Socket(proxy);

  
 
  • 1
  • 2
  • 3
  • 4
  • 5


III 创建 Socket 时直接指定服务器地址和端口号



创建 Socket 对象 , 传入服务器端地址 , 和端口号 , 这是要连接的地址和端口号 ;

Socket socket = new Socket("192.168.1.100", 8888);
Socket socket = new Socket(Inet4Address.getLocalHost(), 8888);

  
 
  • 1
  • 2


IV 创建 Socket 时直接指定服务器地址和端口号 并绑定本地IP地址和端口号



1. IP 地址 : 客户端 IP 地址 和 服务器端 IP 地址是一样的 , 都是本地 IP 地址 ;

2. 端口号 : 服务器端端口号是 8888 , 客户端端口号是 8887 ;

3. 指定内容 : 在创建 Socket 对象时 , 同时指定了服务器端的地址 , 服务器端端口号 , 客户端 IP 地址 , 客户端端口号 ;

4. 参数 : 下面的两种构造函数 , 前两个参数指定服务器端 IP 地址和端口号 , 后两个参数指定绑定的客户端的 IP 地址和端口号 ;

5. 自动连接服务器 : 该 Socket 对象创建成功后 , 会自动连接 , 如果连接失败 , 会抛出异常 , 该 Socket 创建也会失败 ;

Socket socket = new Socket("192.168.1.100", 8888, Inet4Address.getLocalHost(), 8887);
Socket socket = new Socket(Inet4Address.getLocalHost(), 8888, Inet4Address.getLocalHost(), 8887);

  
 
  • 1
  • 2

不推荐使用该方法 , 在 Socket 连接之前 , 要先进行各种参数设置 , 这种情况下无法进行详细的参数配置 , 连接使用的都是默认参数 ;



V 创建无参 Socket 绑定地址



创建 Socket 对象时 , 推荐使用无参构造函数创建对象 , 并进行各种参数设置 , 在 Socket 创建之后 , 可以立刻绑定本地的 IP 地址和端口号 ;

		//创建无参的 Socket 对象
        Socket socket = new Socket();
        //绑定本地的 IP 地址和端口号
        socket.bind(new InetSocketAddress(Inet4Address.getLocalHost(), 8887));

  
 
  • 1
  • 2
  • 3
  • 4

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/100539943

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。