`

非阻塞的Socket链接

阅读更多
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”。在传统的阻塞...

    socket 多线程 例程 非阻塞模式

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

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

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

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

    4. 设置非阻塞模式:在Windows下,可以通过`ioctlsocket()`函数配合`FIONBIO`标志来设置`socket`为非阻塞模式。 5. 异步事件处理:`WSAAsyncSelect()`或`WSAEventSelect()`函数的使用,以及如何根据接收到的事件进行...

    socket非阻塞超时设置

    在Windows环境下,如使用VC6(Visual C++ 6.0)进行开发,我们可以使用Winsock库来实现非阻塞Socket的超时设置。首先,我们需要包含必要的头文件`winsock2.h`和`ws2tcpip.h`,并链接`ws2_32.lib`库。然后,通过调用`...

    ChatRoom(Winsock).rar_WINSOCK_socket 非阻塞_非阻塞

    《ChatRoom(Winsock).rar:Winsock非阻塞编程详解》 在计算机网络编程领域,Winsock(Windows Socket)是Microsoft Windows操作系统中实现TCP/IP协议族的接口,它为应用程序提供了一种标准的方式来发送和接收网络...

    最简单的Socket链接

    本文将详细解析“最简单的Socket链接”这一主题,包括客户端和服务端的实现以及交互过程。 首先,我们要理解Socket的基本概念。Socket是网络通信中的一个抽象接口,可以看作是两台计算机之间的通信通道。它允许应用...

    vc socket tcp 多线程客户端--服务器结构的例子.visual c++

    使用`#include &lt;winsock2.h&gt;`和`#pragma comment(lib, "ws2_32.lib")`来引入所需的头文件和链接库。 2. **初始化和终止**: 在使用Winsock之前,需要调用`WSAStartup`函数初始化Winsock环境,而在程序结束时,调用`...

    DTU如何通过socket实现网络通信.pdf

    相反,非阻塞Socket在调用时不等待,无论结果如何都会立即返回。 【TCP通信流程】 TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,其通信过程包括以下几个步骤: 1. **服务器端**: ...

    异步非阻塞C语言爬虫

    异步非阻塞C语言爬虫是一种高效的数据抓取技术,尤其适用于大数据量的网络抓取任务。在本文中,我们将深入探讨这个话题,并详细解释其中涉及的关键技术和概念。 首先,我们来了解一下“异步非阻塞”模式。在传统的...

    使用socket和DTU通信.doc

    - **阻塞/非阻塞 (Block/Unblock)**:阻塞式套接字在执行网络调用时会一直等待直至操作完成(例如recv()函数在没有数据时会持续等待直至有数据到达);而非阻塞式套接字无论是否完成都会立即返回结果。 - **常见模式...

    C语言Socket简单编程指南

    在Socket编程中,理解数据包Socket、阻塞的概念以及如何使用select()进行多路同步I/O对于处理多路连接和非阻塞Socket通信也是重要的。select()函数允许程序监控多个Socket,等待它们中的任意一个、多个或者全部变得...

    socket通信,mina长连接通信

    1. **MINA架构**:MINA基于NIO(非阻塞I/O),利用Selector进行多路复用,可以在单个线程中处理多个连接,提高系统效率。 2. **长连接**:与传统的Socket短连接不同,长连接保持在客户端和服务器之间长时间打开,...

    Win CE与Windows XP Socket通讯范例

    - 非阻塞Socket、多路复用I/O(如select、poll或epoll)以及异步Socket(如WSAAsyncSelect或WSAEventSelect)可提升并发性能。 通过理解以上知识点,开发者可以实现Win CE和Windows XP之间的高效、安全的Socket...

    Java实现Socket长连接和短连接

    - **心跳包**:发送特定的无业务数据包,用于检查网络连接是否正常,防止TCP的“TIME_WAIT”和“FIN_WAIT_2”状态导致的连接阻塞。 - **异常处理**:及时捕获并处理SocketException或其他网络异常,确保连接的健壮性...

    android基于WiFi的socket客户端和服务器端

    9. **性能优化**:对于大量数据传输,可以考虑使用缓冲区优化读写效率,或者使用NIO(非阻塞I/O)提高并发性能。 通过以上步骤和注意事项,我们可以创建出能在Android设备上运行的基于WiFi的Socket客户端和服务器端...

    java 网络协议(一)InetAddress和Socket(含源码)

    在实际应用中,`InetAddress`和`Socket`经常与其他类结合使用,如`BufferedReader`和`PrintWriter`进行数据读写,或者`SocketChannel`和`Selector`进行非阻塞I/O。这些组合可以帮助我们构建高效、可扩展的网络服务。...

    Socket连接池的简单应用

    // 获取当前空闲的socket链接 private static Mutex m_mutex = new Mutex(); public static XieGouSocket GetFreeConnection() { m_mutex.WaitOne(); // 先阻塞 for (int i = 0; i &lt; m_socket.Length; i++) { if...

    HPSocket4C 静态库(32和64位版本)

    2. **高性能通信**:HPSocket4C基于异步非阻塞I/O模型,通过事件驱动机制,可以处理大量并发连接,实现高吞吐量的网络通信。 3. **协议兼容性**:支持TCP/IP、UDP/Broadcast等多种网络协议,同时还能自定义协议解析...

    Windows_SOCKET编程

    非阻塞模式下,I/O模型有多种,如Select、WSAAsyncSelect、WSAEventSelect以及IO重叠模型和完成端口模型。其中,完成端口模型被认为是处理高并发的最佳选择。 作者建议,初学者可以从简单的WSAAsyncSelect模型开始...

Global site tag (gtag.js) - Google Analytics