`
yangxiuyunji
  • 浏览: 12025 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

最近遇到的网络编程方面需要注意的地方

    博客分类:
  • java
阅读更多
   SocketChannel.connect()必须在SocketChannel.configureblocking之前执行,曾经在《java网络编程精解》(P117)上看到这么一段
  
   socketChannel.connect(isa);
   socketChannel.configureBlocking(false);
   

十分不以为然,按字面意思理解,当然应该先设置此通道的阻塞模式,然后进行连接,因此我在写代码时故意交换了这两句代码的顺序,结果。。。
  
   socketChannel.configureBlocking(false);
   socketChannel.connect(isa);
   

   java帮助文档里是这么记载的:
引用
configureBlocking
public final SelectableChannel configureBlocking(boolean block)throws IOException
调整此通道的阻塞模式。如果给定的阻塞模式与当前的阻塞模式不同,那么为了改变该模式,此方法调用 implConfigureBlocking 方法,同时保持适当的锁定。

connect
public abstract boolean connect(SocketAddress remote)throws IOException
连接此通道的套接字。如果此通道处于非阻塞模式,则调用此方法会发起一个非阻塞连接操作。如果立即建立连接(使用本地连接时就是如此),则此方法返回 true。否则此方法返回 false,并且必须在以后通过调用 finishConnect 方法来完成该连接操作。如果此通道处于阻塞模式,则在建立连接或发生 I/O 错误之前将阻塞此方法的调用。 此方法执行与 Socket 类完全相同的安全检查。也就是说,如果已安装了安全管理器,则此方法验证其 checkConnect 方法是否允许连接到给定远程端点的地址和端口号。可在任意时间调用此方法。如果正在调用此方法时在此通道上调用读取或写入操作,则在此调用完成前将首先阻塞该操作。如果试图发起连接但失败了,也就是说如果调用此方法抛出经过检查的异常,则关闭此通道。


   总结:具体原因尚未弄清,不过还是先连接,再调整阻塞方式吧!


分享到:
评论

相关推荐

    网络编程实现多线程客户端文件下载

    在IT行业中,网络编程是构建分布式系统和网络应用的核心技术之一。本项目“网络编程实现多线程客户端文件下载”是使用C语言实现的一个功能强大的工具,它支持多个客户端同时进行文件的下载和上传,并具备实时暂停和...

    《Delphi技巧100问》-Delphi编程100问

    9. **网络编程**: - Indy库提供了丰富的网络组件,如TIdHTTP、TIdTCPClient、TIdServer等,用于HTTP、FTP、SMTP等协议的网络通信。 10. **国际化和本地化**: - Delphi支持资源字符串,方便多语言支持。 - LRes...

    [360报毒]VB编程100例.rar

    需要注意的是,由于标题提到"360报毒",这可能意味着压缩包可能包含潜在的危险文件或代码。在学习过程中,务必先进行病毒扫描,并在安全的环境中运行示例代码,防止对个人电脑造成影响。同时,建议在学习过程中结合...

    依爱EL-2000消防自动报警主机说明书

    通过以上详细内容,我们可以了解到依爱EL-2000消防自动报警主机不仅具备强大的功能,而且在编程方面也提供了详尽的操作指南和技术支持,确保用户能够高效准确地完成系统编程,从而实现最佳的消防安全管理效果。

    <<编程修养>>

    ### 编程修养:C/C++实用编程注意事项 在软件开发过程中,良好的编程习惯与代码规范不仅能够提高程序的可读性和可维护性,还能帮助开发者避免潜在的错误和漏洞。本文将根据提供的标题、描述及部分内容,深入探讨C/...

    VC文件传输例程

    在VC++环境中,文件传输例程是一个常见的编程任务,它涉及到网络编程、数据序列化以及错误处理等多个方面。本文将详细解析如何使用VC++来实现文件的网络传输功能。 首先,我们要理解网络传输的基本原理。在VC++中,...

    12 OpenFlow配置指导-整本手册.pdf

    还使用了不同的标志来提醒用户在操作中需要注意的地方,如人身安全、数据丢失风险及操作技巧提示等。 六、技术支持与资料获取方式 用户可以通过H3C官方网站获取相关的产品资料、技术支持以及反馈资料。文档中提供了...

    FTP文件传输程序

    FTP(File Transfer Protocol)文件传输协议是互联网...总的来说,这个项目涵盖了网络编程、FTP协议、套接字编程、文件操作以及错误处理等多个方面的知识,对于学习和理解网络通信和FTP服务的实现具有很高的实践价值。

    Python-票根网psstxffpcom的发票批量下载和批量开票

    总结,实现票根网的发票批量下载和批量开票,你需要掌握Python编程、网络请求、文件I/O以及可能的网页解析技术。通过合理利用Python的库和编程技巧,可以高效地自动化这些任务,大大提高工作效率。在编写代码时,...

    MFC类QQ程序设计—完整实例教程

    总之,MFC类QQ程序设计是一个综合性的项目,涉及到MFC对话框设计、控件使用、网络编程、数据传输和存储等多个方面的知识。对于深入理解和掌握MFC以及客户端/服务器架构的应用开发具有很好的实践价值。在学习过程中,...

    S1-MyQQ项目,可能有些bug但可以借鉴

    6. **数据库管理**:如果应用涉及用户数据存储,可能需要一个数据库来保存用户信息、聊天记录等,数据库查询效率、数据一致性都是需要注意的地方。 7. **异常处理**:没有完善的异常处理机制可能导致程序在遇到问题...

    android 断点续传

    综上所述,实现Android的断点续传功能涉及到网络编程、文件操作、数据存储、多线程、异常处理等多个方面,需要对Android系统有深入的理解。通过持续优化和调试,可以确保在多种Android版本上稳定运行。你提供的...

    Android 文件断点续传源码.zip

    在Android平台上,文件断点续传是一项非常实用的技术,它允许用户在中断网络连接后,从上次停止的地方继续传输文件,极大地提高了大文件下载的效率和用户体验。本压缩包"Android 文件断点续传源码.zip"提供了一个...

    otp_win64_21.1.zip

    如果遇到下载速度慢的问题,用户可以选择使用镜像站点或者第三方源来获取软件,这样可以提高下载速度,尤其是在网络环境不佳的地方。 压缩包中的"otp_win64_21.1.exe"文件是Erlang OTP 21.1的安装程序,适用于...

    易语言模块wf.rar

    需要注意的是,使用前应确保模块与易语言版本兼容,同时理解模块提供的功能和使用方法,避免出现错误。 在编程过程中,正确理解和使用易语言模块能极大地提高开发效率,降低出错概率。如果"模块wf"提供了详细的文档...

    易语言支持库txt版本

    这些文档可能会涵盖如字符串处理、数学计算、文件操作、网络通信、图形界面设计等多个方面的内容。例如,开发者可以通过查阅文档了解如何使用易语言进行文件的读写、如何建立网络连接、如何创建和控制窗口组件等。 ...

    登陆器源码求修改

    在这个特定的场景中,标题...这可能需要对网络编程、字符编码、数据解析以及UI设计有深入的理解。如果`CS临时登陆器.e`是源代码文件,那么开发者应打开这个文件,仔细阅读代码,找出问题所在,并根据上述建议进行修改。

    QQ在线客服代码 v2011-源码.zip

    在源码学习过程中,我们需要关注以下几个方面: 1. **编程语言**:首先确定源码使用的编程语言,可能是Java、Python、PHP等,这对于后续的编译和调试至关重要。 2. **框架和库**:了解源码中使用的开发框架和第三...

Global site tag (gtag.js) - Google Analytics