`

Socket详解

阅读更多

 

Socket()
          
通过系统默认类型的 SocketImpl 创建未连接套接字

 

Socket(InetAddress address, int port)
          
创建一个流套接字并将其连接到指定 IP 地址的指定端口号。

 

Socket(InetAddress host, int port, boolean stream)
          
已过时。 Use DatagramSocket instead for UDP transport.

 

Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
          
创建一个套接字并将其连接到指定远程地址上的指定远程端口。

 

Socket(Proxy proxy)
          
创建一个未连接的套接字并指定代理类型(如果有),该代理不管其他设置如何都应被使用。

protected

Socket(SocketImpl impl)
          
使用用户指定的 SocketImpl 创建一个未连接 Socket

 

Socket(String host, int port)
          
创建一个流套接字并将其连接到指定主机上的指定端口号。

 

Socket(String host, int port, boolean stream)
          
已过时。 使用 DatagramSocket 取代 UDP 传输。

 

Socket(String host, int port, InetAddress localAddr, int localPort)
          
创建一个套接字并将其连接到指定远程主机上的指定远程端口。

   . accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。"阻塞"是一个术语,它使程序运行暂时"停留"在这个地方,直到一个会话产生,然后程序继续;通常"阻塞"是由循环产生的。
  . getInputStream方法获得网络连接输入,同时返回一个IutputStream对象实例,。

  . getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。

  注重:其中getInputStreamgetOutputStream方法均会产生一个IOException,它必须被捕捉,因为它们返回的流对象,通常都会被另一个流对象使用。

1.       设定等待建立连接的超时时间

客户端请求与服务端的Socket连接时,默认是一直等待下去,直到连接成功或者抛出异常。

以下代码用于连接本地的监听8000端口的服务端,并且设定了等待连接的超时时间,如果在1分钟内出现某种异常,则抛出该异常,如果超过了一分钟,没连接成功,也没出现任何异常,则抛出SocketTimoutException,如果在1分钟内顺利连接,则connect() 方法顺利返回

 

Socket socket = new Socket();

SocketAddress remoteAddr = new InetSocketAddress(“localhost”,8000);

Socket.connect(remoteAddr,6000);

 

4.客户端连接服务端可能抛出的异常

UnkonwnHostException:如果无法识别主机的名字或IP地址

ConnectException:如果没有服务器进程监听指定的端口,或者服务器进程拒绝连接

SocketTimeoutException:如果等待连接超时

BindException:如果无法把Socket对象与指定的本地IP地址或端口绑定

5.获取Socket的信息

在一个socket对象中包含了远程服务器的IP地址和端口信息,以及客户本地的IP地址和端口信息。从socket对象中还可以获得输出流和输入流,分别用于向服务器发送数据,以及接收从服务器发来的数据。

getInetAdress(); 获得远程服务器IP地址

getPort();获得远程服务器的端口

getLocalAddress();获得客户本地的IP地址

getLocalPort();获得客户本地的端口

getInputStream();获得输入流,会抛出IOException

getOutputStream();获得输入流,会抛出IOException

6.关闭Socket

为确保关闭Socket的操作总是被执行,建议把它写到finally代码块中

Socket socket=null;

Try{

Socket=new Socket(www.javathinker.org,80);

//执行接收和发送数据的操作

……

}catch(IOException e)

e.printStackTrace();

}finally{

  Try{

If(socket!=null)socket.close();[番茄花园1] 

}catch(IOException e){ e.printStackTrace();

}

}

判断一个socket对象是否处于连接状态:

Boolean isConnected=socket.isConnected()&&!socket.isClosed();


 [番茄花园1]关闭Socket写在finally代码块中

分享到:
评论

相关推荐

    socket详解 socket详解 socket详解 socket详解

    Socket 编程详解 在网络编程中,Socket 是一个基本概念, plays a crucial role in building network applications. 在 C# 中,Socket 编程是通过使用 System.Net.Sockets 命名空间中的类和方法来实现的。下面,...

    socket详解

    【Socket详解】 Socket,通常被称为套接字,是网络编程中的基本组件,它在客户端和服务器之间建立起通信的桥梁。本文将深入解析Socket类的构造方法、成员方法以及相关选项,帮助理解如何在Java中使用Socket进行网络...

    SSL+socket 详解-概念

    JSSE(Java Secure Socket Extension)是Java的一个扩展库,它提供了一套API,允许Java应用程序实现SSL/TLS协议,从而为数据传输提供端到端的安全性。JSSE支持服务器和客户端之间的安全通信,能够防止数据在传输过程...

    java socket详解

    Java Socket详解:深入理解网络传输 Java Socket编程是Java网络编程的基础,它允许两台计算机通过网络进行数据交换。在Java中,Socket是实现客户端-服务器通信的关键接口,位于`java.net`包中,提供了简单易用的API...

    cSharp-socket-class.zip_C# socket类_C# socket详解_C# socket 编程_c#

    在C#中,Socket类是进行网络通信的基础,它提供了低级别的、面向连接的和无连接的网络服务。本文将详细解析C#中的Socket类及其相关概念,帮助初学者理解和应用C# Socket编程。 首先,Socket是网络通信的基石,它是...

    java socket 详解

    Java Socket详解:深入理解TCP与UDP通信机制 Java Socket是Java平台中用于网络通信的核心API,它提供了在TCP/IP协议栈上进行低级网络编程的能力。Socket编程是客户端(Client)与服务器端(Server)之间通信的基础...

    python_socket详解

    ### Python Socket 模块详解 #### 一、网络通信基础 在深入了解 Python 的 `socket` 模块之前,我们先来回顾一下网络通信的基础概念。 ##### 1.1 Internet通信 互联网上的通信主要依赖于 IP 协议和 TCP/UDP 协议...

    android 网络编程详解代码第7章(android的Socket编程)

    本章重点讲解的是Android的Socket编程,这是网络通信的基础,它允许设备通过Internet进行双向通信。Socket编程提供了低级别的接口,使得开发者可以直接控制数据传输,实现高效、可靠的数据交换。 首先,让我们理解...

    as socket详解

    在ActionScript 3.0中,Socket编程是用于实现客户端与服务器之间低级通信的关键技术。Socket类提供了双向数据流,允许应用程序发送和接收原始字节流,这使得它非常适合实时数据交换,如游戏、聊天应用或任何需要高效...

    c#socket从入门到精通

    ### C# Socket编程从入门到精通 #### 一、引言 随着互联网技术的发展,网络编程成为了软件开发中不可或缺的一部分。Socket编程作为一种基础且强大的网络通信方式,在多种场景下都有广泛的应用。本文将深入探讨如何...

    linux socket详细分析

    Linux Socket详解 Linux Socket是操作系统提供的网络通信接口,它允许应用程序通过网络协议(如TCP/IP)进行通信。本文将深入探讨Linux Socket的工作原理,主要包括以下几个方面:socket发送数据的函数流程、sys_...

    SocketSocket详细介绍,C++,原理

    ### Socket详解:C++与原理 #### 一、Socket是什么? 在计算机网络中,Socket(套接字)是一种实现进程间通信(IPC)的方式。它为应用层软件提供了访问低层传输协议的服务,使得不同主机上的应用程序能够进行双向...

    Linux异步通信socket

    ### Linux异步通信socket详解 #### 一、异步通信概览 异步通信是现代计算机网络中的一个重要概念,尤其在Linux环境下,异步通信机制提供了高效的数据传输方式,能够处理大量的并发连接,这对于构建高性能的网络...

    三菱Q系列PLC之间SOCKET通讯详解.docx

    《三菱Q系列PLC之间SOCKET通讯详解》 在现代工业自动化领域,PLC(可编程逻辑控制器)之间的通信是实现设备间协同工作的重要环节。三菱Q系列PLC以其强大的功能和稳定性,在众多PLC产品中脱颖而出。本文将深入探讨...

    android开发笔记socket之tcp

    在Android平台上进行应用程序开发时,Socket通信是一种常见且重要的网络通信方式,特别是在涉及到客户端与服务器交互的场景。TCP(Transmission Control Protocol)作为一种面向连接、可靠的传输协议,是Android ...

    Linux的socket编程详解

    ### Linux的Socket编程详解 #### 一、网络中进程间通信机制 进程间通信(IPC, Inter-Process Communication)在单机系统中主要是通过管道、信号、消息队列等方式实现的。然而,当涉及到跨主机通信时,就需要解决...

    berkeley-socket.rar_ Berkeley Socket _berkeley socket

    《Berkeley Socket详解与应用实例》 Berkeley Socket,又称为Berkelely Sockets或Berkley API,是最早在UNIX系统上实现的一种网络编程接口,它为应用程序提供了访问网络的基本方法,允许程序通过Internet协议(如...

Global site tag (gtag.js) - Google Analytics