`

Java 客户端Socket

阅读更多
Socket进行的操作步骤为:
1.连接远程服务器
2.本地和远程主机从socket取得输入流和输出流.
3.数据传输完毕,一端(Http)或者两端关闭连接.


构造函数Socket(String host,int port)throws UnknownHostException,IOExceptionm
的作用是 1.创建Socket对象 2尝试连接远程主机的socket
可以用此来确定端口是否占用,代码如下:

String host="localhost";
		for(int i=0;i<1024;i++)
		{
			try {
				Socket s=new Socket(host,i);
				System.out.println("There is a server on port "+i);
			} catch (UnknownHostException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				break;
			} catch (IOException e) {
				
			}
			
		}


public Socket(InetAddress host,int port) throws IOException:与上面类似

public Socket(String host,int port,InetAddress interface ,int localPort)throws IOException,UnknwonHostException
:前两个参数指定远程主机和端口 后两个参数是指定从本地的主机网络接口和端口进行连接

Socket的常用方法:
public InetAddress getInetAddress():socket连接哪台远程主机
public int getPort():socket连接远程主机的端口号
public int getLocalPort():socket连接本地主机的端口号
public InetAddress getLocalAddress():socket邦定哪个网络接口
如下面代码所示:
try
		{
			Socket theSocket=new Socket("www.sina.com.cn",80);
			InetAddress host=theSocket.getInetAddress();
			int port=theSocket.getPort();
			int localPort=theSocket.getLocalPort();
			InetAddress localAddr=theSocket.getLocalAddress();
			System.out.println("host="+host);
			System.out.println("port="+port);
			System.out.println("localport="+localPort);
			System.out.println("localAddr="+localAddr);
			
		}
		catch (UnknownHostException e)
		{
			e.printStackTrace();
		}
		catch (IOException e)
		{
			
		}

执行结果为:
host=www.sina.com.cn/221.130.29.18
port=80
localport=4206
localAddr=/192.168.1.104


关闭Socket:
    使用完一个socket之后应该将其关闭,一般在finally里面处理。
关闭一个socket之后,其InetAddress,端口号、本地地址、本地端口号,输入流、输出流 仍然可以访问,但是读取输入流数据或者向输出流写数据都会抛出一个IOException异常。

关闭Socket之前要判断socket的状态,
isClosed()方法只会对连接的socket返回正确结果,如果一个socket从未连接过,isClosed仍然返回false.

因而关闭socket的条件为boolean connected=socket.isConnected()&&!socket.isClosed()



Socket的选项:
  TCP_NODELAY:设置为true,可确保包尽可能快的发送
   SO_TIMEOUT:正常情况下,当读取socket时 read()会阻塞尽可能长的时间,已得到足够的字节。  0:表示无限超时
   SO_RCVBUF setReceiveBufferSize()方法可设置socket输入缓冲所使用的字节数。

SO_KEEPALIVE: 客户端会偶尔通过一个空闲连接发送一个数据包(一般2个小时),确保服务器未崩溃。如果服务器没能相应此包,客户端会连续尝试11分钟时间,知道收到相应为止,如果在12分钟内仍未收到相应,客户端就关闭socket,没有SO_KEEPALIVE,不活动的客户端可能会永远存在下去,而不会注意到服务器已经崩溃


SO_REUSEADDR:




分享到:
评论

相关推荐

    java客户端socket与mina服务端通信

    Java客户端Socket与Mina服务端通信是网络编程中常见的应用场景,尤其在开发分布式系统或实时数据传输时。这里我们将深入探讨这两个技术,并了解如何通过它们建立保持长连接的通信。 首先,Socket是Java中用于实现...

    java socket长连接客户端服务端(标准实例)

    ### Java Socket 长连接客户端和服务端实现 在Java中,使用Socket进行网络通信是一种非常常见的技术手段。本文将详细解读“Java Socket长连接客户端服务端(标准实例)”的相关知识点,包括其实现原理、代码解析及...

    java socket 客户端代码

    在Java中,`java.net.Socket`类代表了客户端Socket,而`ServerSocket`类则用于服务器端。 创建一个Java Socket客户端的步骤通常包括以下部分: 1. **导入必要的库**: 首先,我们需要导入`java.net.Socket`和`...

    socket通讯 .net做为服务器端和java 做为客户端

    Java客户端Socket的基本步骤如下: 1. 创建`Socket`实例,指定服务器地址和端口。 2. 获取Socket的输出流和输入流。 3. 使用输出流发送数据,使用输入流接收数据。 4. 完成通信后,关闭Socket及其相关的流。 为了...

    java socket客户端断线重连

    java socket client 断线重连的简单实现 有什么意见可以提哦

    java服务器客户端Socket调用基本功能

    本文将深入探讨如何使用Java实现服务器客户端之间的Socket调用,并通过具体的示例代码来阐述基本功能。 首先,我们需要理解Socket的工作原理。Socket可以被视为网络上的端点,允许应用程序在两个网络连接之间建立...

    java编写socket服务端和客户端给予cmpp3.0

    Java 编写基于 CMPP3.0 的 Socket 服务端和客户端是移动通讯领域中常见的技术实践,主要用于实现与移动运营商的短信网关进行数据交互。CMPP(China Mobile Short Message Peer-to-Peer)是中国移动制定的一种短消息...

    java编写的SOCKET客户端

    这个软件可以任意设置目标IP和端口实现连接相应的主机服务器,编写语言为java,安装时候需要有相应的java环境运行。

    用java写socket.io客户端所需jar包

    6. **版本兼容性**:注意确认所使用的Java客户端库版本与你的Socket.IO服务器版本兼容,因为不兼容的版本可能会导致通信问题。 通过以上步骤,你应该能够在Java项目中成功集成Socket.IO客户端,并实现与服务器的...

    Java 中的 Socket.IO 客户端实现.zip

    Java 中的 Socket.IO 客户端实现Socket.IO-Java 客户端socket.io-java-client 是 Java 版socket.io的一个易于使用的实现。它使用Weberknecht作为传输后端,但编写自己的传输也很容易。请参阅下面的描述。还包括一个 ...

    Java基于socket实现的客户端和服务端通信功能完整实例

    Java基于socket实现的客户端和服务端通信功能完整实例 在Java中,Socket是实现网络通信的基础,通过Socket可以实现客户端和服务器端之间的通信。本文将详细介绍Java基于Socket实现的客户端和服务端通信功能,包括...

    C++写的服务器与Java写的客户端通过Socket通信java代码

    - 创建Socket:在Java客户端,同样先创建Socket对象,通常使用`Socket()`构造函数指定服务器的IP地址和端口号。 - 建立连接:客户端的Socket尝试与服务器建立连接。 - 数据收发:客户端使用`getOutputStream()`...

    例10.05 Socket客户端程序.rar_java socket _socket_socket 客户端_socket

    Socket客户端程序是Java编程语言中实现网络通信的基础组件,它基于TCP/IP协议栈,用于创建两个应用程序之间的连接,使得数据可以在它们之间传输。在Java中,`java.net.Socket`类和`java.net.ServerSocket`类是实现...

    基于java的socket客户端

    基于java的socket开发,简单的客户端程序,可向服务器发送和接受请求,并能保存成文件。

    JAVA_Socket_TCP(客户端服务器)

    本教程将深入探讨如何使用Java Socket库创建TCP客户端和服务器。 首先,我们从服务器端开始。在Java中,`java.net.ServerSocket`类用于创建服务器端的Socket,监听特定端口上的连接请求。以下是一个简单的服务器...

    java使用Socket类接收和发送数据

    Java中的Socket类是进行网络通信的核心组件,它主要用于实现客户端与服务器之间的TCP连接,从而进行双向数据传输。本文将深入探讨如何使用Socket类接收和发送数据。 首先,我们需要理解Socket类的基本概念。Socket...

    java socket客户端程序

    java socket做的通信client端程序

    C/C++服务器与Java客户端进行socket通信

    本教程将深入探讨如何在C/C++服务器环境下利用Visual Studio 2010与Java客户端环境下的Eclipse进行Socket通信。 一、C/C++服务器端(VS2010) 在Visual Studio 2010中,我们可以使用Winsock库来实现Socket编程。...

    基于java socket实现的ftp客户端和服务端交互

    本项目是使用java Socket编程实现的一个简单的FTP服务器和客户端。 客户端目前实现的功能是登录,刷新,上传和下载。同时具有主动模式和被动模式两种模式。 服务器端实现的功能有登录、刷新、上传、下载、列出文件...

Global site tag (gtag.js) - Google Analytics