仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 752|回复: 14
打印 上一主题 下一主题

[学习教程] 来看Java收集编程从进门到精晓(29):服务端Socket的选项

[复制链接]
不帅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:21:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
先谈谈我对java的一些认识。我选择java,是因为他语法简单,功能强大,从web,到桌面,到嵌入式,无所不能。但当我进一步了解了java后,感叹,java原来也有许多缺点。
ServerSocket类有以下三个选项:
1.SO_TIMEOUT:设置accept办法的超不时间。
2.SO_REUSEADDR:设置服务端统一个端口是不是能够屡次绑定。
3.SO_RECBUF:设置吸收缓冲区的巨细。
1、SO_TIMEOUT选项
能够经由过程SeverSocket类的两个办法(setSoTimeout和getSoTimeout)来设置和取得SO_TIMEOUT选项的值,这两个办法的界说以下:
public synchronized void setSoTimeout(int timeout) throws SocketException
public synchronized int getSoTimeout() throws IOException
setSoTimeout办法的timeout参数暗示accept办法的超不时间,单元是毫秒。在一般情形下,ServerSocket类的accept办法在守候客户端哀求时处于无穷守候形态。如HTTP服务器在没有效户会见网页时会一向守候用户的哀求。一样平常不必要对服务端设置守候客户端哀求超时,但在某些特别情形下,服务端划定客户端必需在必定工夫外向服务端收回哀求,这时候就要设置守候客户端哀求超时,也就是accept办法的超不时间。当设置客户端哀求超时后,accept办法在守候超不时间后抛出一个SocketTimeoutException非常。上面的代码演示了怎样设置和取得SO_TIMEOUT选项的值,超不时间经由过程命令行参数体例传进AcceptTimeout。
package server;
import java.net.*;
public class AcceptTimeout
{
    public static void main(String[] args) throws Exception
    {
        if (args.length == 0)
            return;
        ServerSocket serverSocket = new ServerSocket(1234);
        int timeout = Integer.parseInt(args[0]);

        serverSocket.setSoTimeout(Integer.parseInt(args[0]));
        System.out.println((timeout > 0) ? "accept办法将在"
                + serverSocket.getSoTimeout() + "毫秒后抛出非常!" : "accept办法永久堵塞!");;
        serverSocket.accept();
    }
}
实行上面的命令:
javaserver.AcceptTimeout3000
运转了局:
accept办法将在3000毫秒后抛出非常!
Exception in thread "main" java.net.SocketTimeoutException: Accept timed out
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
    at java.net.ServerSocket.implAccept(ServerSocket.java:450)
    at java.net.ServerSocket.accept(ServerSocket.java:421)
    at chapter5.AcceptTimeout.main(AcceptTimeout.java:16)
setSoTimeout办法能够在ServerSocket对象绑定端口之前挪用,也以在绑定端口以后挪用。以下面的代码也是准确的:
ServerSocket serverSocket = new ServerSocket();
serverSocket.setSoTimeout(3000);
serverSocket.bind(new InetSocketAddress(1234));
<p>
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。
爱飞 该用户已被删除
沙发
发表于 2015-1-20 20:57:51 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
分手快乐 该用户已被删除
板凳
发表于 2015-1-25 20:22:49 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
小女巫 该用户已被删除
地板
发表于 2015-1-31 20:27:35 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
因胸联盟 该用户已被删除
5#
发表于 2015-2-1 11:07:52 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
蒙在股里 该用户已被删除
6#
发表于 2015-2-1 16:57:31 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
第二个灵魂 该用户已被删除
7#
发表于 2015-2-3 10:16:13 来自手机 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
小魔女 该用户已被删除
8#
发表于 2015-2-8 20:08:56 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
金色的骷髅 该用户已被删除
9#
发表于 2015-2-11 00:47:08 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
再见西城 该用户已被删除
10#
发表于 2015-2-12 00:16:46 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
柔情似水 该用户已被删除
11#
发表于 2015-2-14 02:11:55 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
飘飘悠悠 该用户已被删除
12#
发表于 2015-3-2 09:32:09 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
精灵巫婆 该用户已被删除
13#
发表于 2015-3-11 02:47:20 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
兰色精灵 该用户已被删除
14#
发表于 2015-3-17 19:09:39 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
活着的死人 该用户已被删除
15#
发表于 2015-3-24 20:51:23 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-23 01:37

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表