|
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对象实例。
注重:其中getInputStream和getOutputStream方法均会产生一个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();
}catch(IOException e){ e.printStackTrace();
}
}
判断一个socket对象是否处于连接状态:
Boolean isConnected=socket.isConnected()&&!socket.isClosed();
分享到:
相关推荐
Socket 编程详解 在网络编程中,Socket 是一个基本概念, plays a crucial role in building network applications. 在 C# 中,Socket 编程是通过使用 System.Net.Sockets 命名空间中的类和方法来实现的。下面,...
【Socket详解】 Socket,通常被称为套接字,是网络编程中的基本组件,它在客户端和服务器之间建立起通信的桥梁。本文将深入解析Socket类的构造方法、成员方法以及相关选项,帮助理解如何在Java中使用Socket进行网络...
JSSE(Java Secure Socket Extension)是Java的一个扩展库,它提供了一套API,允许Java应用程序实现SSL/TLS协议,从而为数据传输提供端到端的安全性。JSSE支持服务器和客户端之间的安全通信,能够防止数据在传输过程...
Java Socket详解:深入理解网络传输 Java Socket编程是Java网络编程的基础,它允许两台计算机通过网络进行数据交换。在Java中,Socket是实现客户端-服务器通信的关键接口,位于`java.net`包中,提供了简单易用的API...
在C#中,Socket类是进行网络通信的基础,它提供了低级别的、面向连接的和无连接的网络服务。本文将详细解析C#中的Socket类及其相关概念,帮助初学者理解和应用C# Socket编程。 首先,Socket是网络通信的基石,它是...
Java Socket详解:深入理解TCP与UDP通信机制 Java Socket是Java平台中用于网络通信的核心API,它提供了在TCP/IP协议栈上进行低级网络编程的能力。Socket编程是客户端(Client)与服务器端(Server)之间通信的基础...
### Python Socket 模块详解 #### 一、网络通信基础 在深入了解 Python 的 `socket` 模块之前,我们先来回顾一下网络通信的基础概念。 ##### 1.1 Internet通信 互联网上的通信主要依赖于 IP 协议和 TCP/UDP 协议...
本章重点讲解的是Android的Socket编程,这是网络通信的基础,它允许设备通过Internet进行双向通信。Socket编程提供了低级别的接口,使得开发者可以直接控制数据传输,实现高效、可靠的数据交换。 首先,让我们理解...
在ActionScript 3.0中,Socket编程是用于实现客户端与服务器之间低级通信的关键技术。Socket类提供了双向数据流,允许应用程序发送和接收原始字节流,这使得它非常适合实时数据交换,如游戏、聊天应用或任何需要高效...
### C# Socket编程从入门到精通 #### 一、引言 随着互联网技术的发展,网络编程成为了软件开发中不可或缺的一部分。Socket编程作为一种基础且强大的网络通信方式,在多种场景下都有广泛的应用。本文将深入探讨如何...
Linux Socket详解 Linux Socket是操作系统提供的网络通信接口,它允许应用程序通过网络协议(如TCP/IP)进行通信。本文将深入探讨Linux Socket的工作原理,主要包括以下几个方面:socket发送数据的函数流程、sys_...
### Socket详解:C++与原理 #### 一、Socket是什么? 在计算机网络中,Socket(套接字)是一种实现进程间通信(IPC)的方式。它为应用层软件提供了访问低层传输协议的服务,使得不同主机上的应用程序能够进行双向...
### Linux异步通信socket详解 #### 一、异步通信概览 异步通信是现代计算机网络中的一个重要概念,尤其在Linux环境下,异步通信机制提供了高效的数据传输方式,能够处理大量的并发连接,这对于构建高性能的网络...
《三菱Q系列PLC之间SOCKET通讯详解》 在现代工业自动化领域,PLC(可编程逻辑控制器)之间的通信是实现设备间协同工作的重要环节。三菱Q系列PLC以其强大的功能和稳定性,在众多PLC产品中脱颖而出。本文将深入探讨...
在Android平台上进行应用程序开发时,Socket通信是一种常见且重要的网络通信方式,特别是在涉及到客户端与服务器交互的场景。TCP(Transmission Control Protocol)作为一种面向连接、可靠的传输协议,是Android ...
### Linux的Socket编程详解 #### 一、网络中进程间通信机制 进程间通信(IPC, Inter-Process Communication)在单机系统中主要是通过管道、信号、消息队列等方式实现的。然而,当涉及到跨主机通信时,就需要解决...
《Berkeley Socket详解与应用实例》 Berkeley Socket,又称为Berkelely Sockets或Berkley API,是最早在UNIX系统上实现的一种网络编程接口,它为应用程序提供了访问网络的基本方法,允许程序通过Internet协议(如...