Java_socket

java socket通信基础补充

1、setReuseAddress(true|false),该参数设置为true,允许将多个socket绑定到同一个端口上,通过getReuseAddress()方法获取当前值即可,但是在发生Socket.bind()之前必须先设置才会生效。这个参数很少回去考虑使用。

2、setTcpNoDelay(true|false),该参数默认为false,会启用Nagle算法。启用这个算法是为了避免网络阻塞:当socket交互双方存在大量的小数据交互时,它会将较小的包延迟发送,若200ms内有多次小数据发送,则会合并在一起发送,若数据达到一定的范围,也会立即发送。

3、setSoLinger(true|false, int linger),该参数决定socket关闭时是否尝试继续发送Kernel缓冲区中还未发送出去的数据,若设置为true,则由第二个int类型的参数决定发送kernel缓冲区中还未发送的内容最长的等待时间,单位为秒,通过getSoLinger()可以获取到设置的值。

4、setSendBufferSize(int),设置发送缓冲区的大小,默认值为8192字节,通过getSendBufferSize()得到当前值,一般保持默认就OK.

5、setReceiveBufferSize(int),设置发送缓冲区的大小,默认值为8192字节,通过getReceiveBufferSize()得到当前值,一般保持默认就OK.

6、setKeepAlive(true|false),它每隔一段时间(很长一段时间,例如2小时)会将数据包发送到对方,如果对方响应,则认为连接依然存活;如果未响应,则在十多分钟后再发送一个数据包;如果还未响应,在再过十多分钟再继续发送一个数据包;如果对方还是未响应,则会将客户端的socket关闭,在某些情况下设置该参数后可以避免客户端的一些垃圾socket永远无法关闭的状况。该参数的默认值为false,可以通过getKeepAlive()获取到当前值。

7、setOOBInLine(true|false),这个参数默认为false,若开启,则允许通过socketde方法sendUrgentData(int)发送,这个API是直接发送,不会经过缓冲区。

java中的网络支持

针对网络通信的不同层次,java提供的网络功能有四大类:
1、InetAddress:用于标识网络上的硬件资源
2、URL:统一资源定位符,通过URL可以直接读取或写入网络上的数据
3、Sockets:使用TCP协议实现网络通信的Socket相关的类
4、Datagram:使用UDP协议,将数据保存在数据报中,通过网络进行通信。

1、InetAddress

InetAddress address = InetAddress.getLocalHost();
System.out.println(address.getHostName());
System.out.println(address.getHostAddress());                
System.out.println(address);

InetAddress address2 = InetAddress.getByName("JOE-PC");
System.out.println(address2.getHostName());
System.out.println(address2.getHostAddress());

suyue-PC
192.168.1.159
suyue-PC/192.168.1.159
JOE-PC
192.168.1.81
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值