java网络编程1
Socket的构造方法包括:
1、Socket(),无参构造方法;
2、Socket(InetAddress address,int port) throws UnknownHostException,IOException,指定要连接的服务器地址和端口号;
3、Socket(InetAddress address,int port,InetAddress localAddr,int localPort) throws IOException,指定四个参数,其中localAddr主要是当本地有多块网卡时使用;
4、Socket(String host,int port) throws UnknownHostException,IOException;
5、Socket(String host,int port,InetAddress localAddr,int localPort) throws IOException。
第一个无参构造方法主要用于当socket需要设置一些参数时,因为要求当socket绑定到端口后就无法再修改参数,因此可以将参数和绑定地址一起设置,比如如下代码:
Socket socket = new Socket();
SocketAddress remoteAddr = new InetSocketAddress("localhost",8000);
socket.connect(remoteAddr,6000);
以上代码意思是连接到本地的8000端口,等待时间为6s。
在带参数的构造方法中大部分都用到了InetAddress类,该类主要是包含了IP地址,不包含端口,作为对比,SocketAddrss类则包含了IP地址和端口两个参数,但它是个抽象类,使用时必须用其子类InetSocketAddress类,而且创建的过程中可以以InetAddress类为其参数,因为该类指定了IP地址。而InetAddress实例的构造则需要使用InetAddress类的静态方法,该类的构造实例的静态方法可以有多种,根据不同的参数类型调用不同方法。
Socket类在通信完毕时使用close()方法关闭输入与输出,也可以使用shutdownInput()与shutdownOutput()关闭输入与输出中某一项。
设置Socket选项:
1、TCP_NODELAY,默认是发送数据需要先缓存,通过设置该参数可以使得能及时发送数据,方法为 public void setTcpNoDelay(boolean on) throws SocketException,public boolean getTcpNoDelay() throws SocketException。
2、SO_RESUSEADDR,如果在关闭socket的时候,网络上还有发送到该socket的数据,则底层不会立刻释放本地端口,而是会等待该数据的到来(它怎么知道还有数据?),但是收到数据后却不会进行处理,防止新进程误接收。public void setResuseAddress(boolean on) throws SocketException,public boolea getResuseAddress() throws SocketException,默认为true。
3、SO_TOMEOUT,public void setSoTimeout(int milliseconds) throws SocketException,public int getSoTimeOut() throws SocketException,该选项的设置必须在开始接收数据之前执行才有效。且一旦超时发生,socket并不断开而是可以继续使用。
4、SO_LINGER,public void setSoLinger(boolean on,int seconds) throws SocketException,public int getSoLinger() throws SocketException。默认情况下,socket一旦关闭,close()方法立马返回,但底层并不会立马断开,会将尚未发送完毕的数据都发送出去才关闭,在设置中第二个参数单位为 s,它表示在seconds秒内先发送剩余数据,如果发送完则关闭,如果到时后仍然没有发送完也关,丢弃剩余数据。
5、SO_RCVBUF,设置输入缓冲区大小,以KB为单位设置。
6、SO_SNDBUF,设置输出缓存区大小。
7、SO_KEEPALIVE,负责监视底层的TCP连接是否还有效,一旦连接时间长而没有互动,则会监测是否还处于活动状态,如果不是则会主动关闭socket。
8、OOBLINE,设置是否支持发送一个字节的TCP紧急数据,而在具体的发送字节时使用sendUrgentData(int data)方法。如果该参数被设置为false,则发送的紧急数据在接收方会被扔掉,所以必须设置为true。
java网络编程1的更多相关文章
- 20145205 《Java程序设计》实验报告五:Java网络编程及安全
20145205 <Java程序设计>实验报告五:Java网络编程及安全 实验要求 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.客户端中输入明文,利用DES算法加密,D ...
- Java 网络编程学习总结
新手一枚,Java学习中,把自己学习网络编程的知识总结一下,梳理下知识,方便日后查阅,高手莫进. 本文的主要内容: [1] 网络编程认识 [2] TCP/IP编程 ...
- 20145212 实验五《Java网络编程》
20145212 实验五<Java网络编程> 一.实验内容 1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成 ...
- 20145213《Java程序设计》实验五Java网络编程及安全
20145213<Java程序设计>实验五Java网络编程及安全 实验内容 1.掌握Socket程序的编写. 2.掌握密码技术的使用. 3.设计安全传输系统. 实验预期 1.客户端与服务器 ...
- 20145206《Java程序设计》实验五Java网络编程及安全
20145206<Java程序设计>实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验步骤 我和201451 ...
- 20145337实验五Java网络编程及安全
20145337实验五Java网络编程及安全 实验内容 掌握Socket程序的编写 掌握密码技术的使用 设计安全传输系统 实验步骤 基于Java Socket实现安全传输 基于TCP实现客户端和服务器 ...
- java 网络编程复习(转)
好久没有看过Java网络编程了,现在刚好公司有机会接触,顺便的拾起以前的东西 参照原博客:http://www.cnblogs.com/linzheng/archive/2011/01/23/1942 ...
- JAVA课程实验报告 实验五 Java网络编程及安全
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:韩玉琪 学号:20135317 成绩: 指导教师:娄嘉 ...
- 20145225《Java程序设计》 实验五 Java网络编程及安全
20145225<Java程序设计> 实验五 Java网络编程及安全 实验报告 一.实验内容 基于Java Socket实现安全传输. 基于TCP实现客户端和服务器,结对编程一人负责客户端 ...
- Java 网络编程----基本概念
网络现在是一个非常普遍的概念. 以下是维基百科上的解释: 网络一词有多种意义,可解作: 网络流也简称为网络(network).一般用于管道系统.交通系统.通讯系统建模. 有时特指计算机网络. 或特指其 ...
随机推荐
- JavaScript闭包浅谈
------------------- 作者:willingtolove: 本文链接:http://www.cnblogs.com/willingtolove/p/4745889.html 1. 变量 ...
- QEMU VCPU热插特性
最近学习QEMU中VCPU热插特性,需要了解QEMU中VCPU热插的整个流程,VCPU热插是QEMU主板的一个feature. 1:这里先分析一下QEMU的主板模拟,主板在QEMU的设备模型中对应的是 ...
- 【ZOJ 3929】Deque and Balls(普通dp)
题意:给出一个序列,按照顺序一个一个放入双端队列(可以放在头部也可以放在尾部),一个队列的美丽指数就是数列中a[i]>a[i+1]的个数,求美丽指数的期望*2^n的值. 解题思路:方便起见,我们 ...
- MySQL报错:Got error 28 from storage engine
今天碰到数据库出错: Got error 28 from storage engine 查了一下,数据库文件所在的盘应该没事,应该是数据库用的临时目录空间不够 问题原因: 磁盘临时空间不够导致. 解决 ...
- word20161219
Remote Installation Services / 远程安装服务 remote procedure call, RPC / 远程过程调用 remote storage / 远程存储 Remo ...
- CentOS 7 Git安装
Git安装 yum -y install git 安装后,在srv目录下建立Git的目录. 初始化一个git空仓库 git init --bare project.git 增加用于访问git仓库的用户 ...
- WebService -- Java 实现之 CXF ( 添加系统预定义的拦截器)
1. 概述 CXF允许我们在webservice的in/out位置添加拦截器.拦截器有两大分类,一类是系统预定义的:另一类是自定义拦截器. 2. 在server端添加拦截器. JaxWsServerF ...
- js:使用js过程中遇到的一个小问题
在一个作业中使用了js,函数A调用函数B.当A和B中均含有变量i的时候,相关操作结果可能会出错. 将B中的i替换为j(j不存在于A中)后,结果正确. 目前考虑原因是两个变量i有相关性(或者说实际上就是 ...
- 中间件Study-了解什么是中间件
一.中间件含义:中间价是位于各种平台(硬件和操作系统)和各种应用之间的通用服务. 帮助应用实现高效的.可靠的消息使应用之间实现便捷的互联互通高效.可靠构建企业应用实现分布式应用的快速搭建和部署注:中间 ...
- RBAC基于角色的访问控制
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...