`
avery_leo
  • 浏览: 387953 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

非阻塞的Socket链接(来自老紫竹)

    博客分类:
  • JAVA
阅读更多
import java.io.IOException;   
import java.net.InetSocketAddress;   
import java.nio.channels.SocketChannel;   
  
/**  
 * 非阻塞的Socket链接。<br>  
 * 可以在链接建立期间做一些别的操作。  
 *   
 * @author 赵学庆,Java世纪网(java2000.net)  
 *   
 */  
public class SocketNonBlock {   
  
  /**  
   * 创建一个非阻塞的Socket通道。  
   *   
   * @param hostName  
   *          主机  
   * @param port  
   *          端口  
   * @return Socket端口  
   * @throws IOException  
   */  
  public static SocketChannel createSocketChannel(String hostName, int port)   
      throws IOException {   
    SocketChannel sChannel = SocketChannel.open();   
    sChannel.configureBlocking(false);   
    sChannel.connect(new InetSocketAddress(hostName, port));   
    return sChannel;   
  }   
  
  public static void main(String[] args) {   
    try {   
      // 创建链接   
      SocketChannel sChannel = createSocketChannel("www.java2000.net", 80);   
  
      // 可以通过判断是否连接,在链接成功建立前做一些其它的事情   
      while (!sChannel.finishConnect()) {   
        System.out.println("waiting....");   
        try {   
          Thread.sleep(10);   
        } catch (InterruptedException e) {   
          e.printStackTrace();   
        }   
      }   
      System.out.println(sChannel.isConnected());   
    } catch (IOException e) {   
      e.printStackTrace();   
    }   
  
  }   
  
}  

 

运行结果

waiting....
waiting....
true

分享到:
评论

相关推荐

    MFC实现非阻塞Socket通信

    本文将深入探讨如何使用MFC实现非阻塞Socket通信,并结合protobuf(Protocol Buffers)作为数据交换格式,构建一个允许多个客户端与单一服务器进行通信的系统。 首先,我们来理解“非阻塞Socket”。在传统的阻塞...

    Linux下的Socket编程实例(阻塞和非阻塞)

    Linux下的Socket编程实例(阻塞和非阻塞) 通过分析给定的文件信息,我们可以生成以下知识点: Socket编程概述 Socket 编程是指使用操作系统提供的 socket 编程接口来实现网络通信的编程方式。Socket 编程可以实现...

    windows的阻塞和非阻塞Socket编程

    本篇主要关注的是Socket编程中的阻塞和非阻塞模式,这两种模式在处理I/O操作时有着显著的区别。 阻塞Socket(Blocking Socket)是最基础的Socket编程模型。当一个Socket被设置为阻塞模式时,调用recv()或send()等...

    C++ socket 阻塞与非阻塞

    本话题主要探讨的是在C++ Socket编程中的阻塞模式与非阻塞模式,以及它们在多线程环境下的应用和资源管理。 一、阻塞与非阻塞模式 1. **阻塞模式**:在阻塞模式下,当一个Socket调用(如recv或send)执行时,如果...

    C++网络编程例子说明异步非阻塞Socket的基本原理和工作机制

    用一个最简单的例子说明异步非阻塞Socket的基本原理和工作机制

    非阻塞Socket的应用

    1. **服务器端**:创建并监听一个非阻塞Socket,通过I/O复用或异步I/O来处理来自多个客户端的连接请求。当有新的连接到达或数据可读时,服务器会处理这些事件,并将数据转发给其他客户端或存储到数据库。 2. **...

    python多线程非阻塞socket

    在Python编程中,多线程和非阻塞的Socket技术是构建高效网络应用程序的关键组成部分。本文将深入探讨如何在Python中实现多线程非阻塞的Socket服务端和客户端,以提升并发处理能力。 首先,让我们理解“多线程”和...

    socket 多线程 例程 非阻塞模式

    在这个"socket多线程例程非阻塞模式"的示例中,我们将深入探讨如何在Windows平台上实现多线程的socket通信,并了解非阻塞模式的工作原理。 首先,让我们来理解Socket的基本概念。Socket是进程间通信(IPC)的一种...

    Socket C++ TCP阻塞\非阻塞 服务器 客户端 开发

    ### Socket C++ TCP阻塞与非阻塞服务器客户端开发 #### 概述 本文档将详细介绍如何使用C++ Winsock库来开发TCP非阻塞服务器。通过本篇内容的学习,您将了解到设置socket函数为非阻塞模式的方法,并且能够深入了解...

    非阻塞模式socket程序

    非阻塞模式的Socket编程是网络编程中的一个重要概念,它与传统的阻塞模式Socket形成了鲜明对比。在阻塞模式下,Socket操作会一直等待直到有数据可读或可写,这可能导致程序在等待期间无法执行其他任务。而非阻塞模式...

    feizuse.rar_C socket 非阻塞_网络服务_非阻塞_非阻塞 socket

    "feizuse.rar"中的源码可能包含了一个简单的网络服务器示例,展示了如何在Windows环境下创建非阻塞`socket`,设置异步事件,并响应来自客户端的连接请求和数据传输。通过分析和学习这个源码,我们可以了解到以下关键...

    Linux UDP socket 设置为的非阻塞模式与阻塞模式区别

    ### Linux UDP Socket 非阻塞模式与阻塞模式的区别详解 #### 一、引言 在进行网络编程时,我们经常会遇到阻塞模式与非阻塞模式的选择问题。这两种模式直接影响程序的运行效率和资源利用率。本文将详细介绍在Linux...

    java网络编程socket非阻塞通信

    通过java网络编程深入理解socket阻塞通信和非阻塞通信的在网络中的应用 源码包每一行都有注释,在代码里面每一个类都有详细的注释来解释这个类的功能这个方法的功能,调用哪一个类的哪一个功能等等。 压缩包包含实验...

    socket非阻塞模式

    在通过一天学习,慢慢摸索中,研究出来了自己成果!

    非阻塞socket连接

    支持跨平台的非阻塞socket连接,no-block socket connect

    进程间通信_socket_udp_非阻塞

    采用UDP方式的进程间通信模型,支持非阻塞,socket编程,采用select网络模型。 采用UDP方式的进程间通信模型,支持非阻塞,socket编程,采用select网络模型。 采用UDP方式的进程间通信模型,支持非阻塞,socket编程...

    C++封装类CWSocket(多线程 非阻塞)

    通过阅读和分析这些代码,我们可以深入了解如何在C++中实现多线程、非阻塞的socket类,以及如何添加超时控制。 总的来说,C++封装类CWSocket的实现结合了多线程、非阻塞I/O和超时处理等关键技术,旨在提供一个高效...

    基于多线程的非阻塞 socket 编程

    # 基于多线程的非阻塞Socket编程教程 ## 简介 基于多线程的非阻塞Socket编程是一种高效处理网络通信的技术,结合了多线程编程和非阻塞I/O。它用于构建高性能的网络服务器和客户端,可以同时处理多个连接而不使线程...

    异步非阻塞socket聊天室程序

    "异步非阻塞socket聊天室程序"是一个使用C++语言,并基于MFC(Microsoft Foundation Classes)库构建的项目,旨在实现高效的多用户通信。下面将详细阐述这个程序背后的关键知识点。 首先,我们关注的是"异步非阻塞...

Global site tag (gtag.js) - Google Analytics