Socket类的构造函数:
Socket () 通过系统默认类型的 SocketImpl 创建未连接套接字
Socket (InetAddress address, int port) 创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
Socket (String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。
Socket (InetAddress address, int port, InetAddress localAddr, int localPort) 创建一个套接字并将其连接到指定远程端口上的指定远程地址。
Socket (String host, int port, InetAddress localAddr, int localPort) 创建一个套接字并将其连接到指定远程主机上的指定远程端口。
Socket (Proxy proxy) 根据不管其他设置如何都应使用的指定代理类型(如果有),创建一个未连接的套接字。
Socket (SocketImpl impl) 创建带有用户指定的 SocketImpl 的未连接 Socket。
还有两个已过时的构造函数,如果有用到再说吧。
1、第一个构造函数:
Socket skt = new Socket();
SocketAddress remoteaddr = new InetSocketAddress("localhost",8000);
skt.connect(remoteaddr,60000);//等待连接的超时时间为1分钟。
2、针对第二个构造函数:
Socket(InetAddress address,int port)
针对InetAddress类,有如下代码:
InetAddress address = InetAddress.getLocalHost();
InetAddress addr = InetAddress.getByName("ip地址");
到目前为止,跟返回网络地址有关的类有SocketAddress、InetSocketAddress、InetAddress。
客户端连接服务器端可能抛出的异常有:
java.net
类 UnknownHostException-------------无法识别的主机名字或者ip地址
java.net 类 ConnectException---------------------没有服务器进程监听指定的端口。客户端进程连接服务器端时,客户端的端口必须是被服务器监听的端口。另外,ServerSocket(int port,int backlog)构造方法的第二个参数,设定服务器的连接请求队列的长度,如果队列中的连接请求已满,服务器就会拒绝其余的连接请求。
java.net 类 SocketTimeoutException-------------连接超时
java.net 类 BindException--------------------------当前的socket对象与指定的本地ip地址不能进行绑定,就会抛出这个异常。
这四种异常都是io异常的直接或者间接子类。
Socket类当中常用的方法有:
getInetAddress () 返回远程服务器的ip地址
getPort () 返回此套接字连接到的远程端口。
getLocalAddress () 获取套接字绑定的本地地址。
getLocalPort () 返回此套接字绑定到的本地端口。
getOutputStream () 返回此套接字的输出流。
getInputStream () 返回此套接字的输入流。
另外,socket的关闭有彻底关闭和半关闭的说法和用法。close就是彻底关闭,但是也可以半关闭。
设置Socket的选项:
1、setTcpNoDelay-------此值默认为false,表示采用negale算法来发送数据;negale算法是指发送方发送的数据先放入缓冲区当中,等缓冲区满了之后再发送。如果设置为true,则表示立刻发送。
2、setReuseAddress---当执行socket的close方法时,如果网络上还有发送到这个socket的数据,那么这个端口是不能被立即关闭的,而是等接收到网络上发送过来的剩余数据之后才能关闭。那么关闭之前的这段时间,这个端口就不能被另外的程序占用,比如服务器端的socket,如果当时关闭,而有很快的重启,就有可能造成启动失败。值得注意的是,此方法必须在socket没有绑定到本地端口之前来调用。
Socket sk = new Socket();
sk.setReuseAddress();.....................
3、setSoTimeOut(毫秒)----设置接收数据的等待超时时间。
4、setSoLinger(true/false,秒);------默认情况下在执行socket.close()方法时,当前socket会立即关闭,但socket的底层实际上是不会立刻关闭的,它会延迟一段时间,知道发送完所有剩余的数据,才会真正的关闭socket,断开连接。但是如果在执行socket.close()的前面执行socket.setSoLinger(true,0),那么就会立刻连底层都关闭了。
如果设定socket.setSoLinger(true,3600)----那么此时关闭的条件是:在3600秒之前发送完了所有的数据;在3600秒到了之后,数据没有发送完毕,此时强制关闭。
5、setReceiveBufferSize()
6、SetSendBufferSize()
这两个方法用于设置接收和发送数据缓冲区的大小。
7、setKeepAlive();当设置为true时,表示底层的TCP实现会实时的监控该连接是否有效。当连接处于空闲状态超过了两个小时,本地的TCP实现会发送一个数据包给远端的socket,如果远程没有相应,TCP实现就会持续尝试11分钟,知道收到相应为止。如果在12分钟内没有收到相应,TCP实现就会关闭本地socket,断开连接。
8、setOOBInline(true);表示向服务器端发送一个字节的紧急数据。
分享到:
相关推荐
"api_sock"、"api._socket"、"api_socket"和"api_socket socket_can_api"这些标签暗示了我们可能讨论的是Socket API的不同方面,包括基础功能和可能的CAN(Controller Area Network)协议支持。 首先,让我们深入...
在本示例中,"delphi API实现socket通信示例" 是一个面向初学者的教学资源,旨在教授如何使用Delphi编程语言通过API进行Socket通信。Socket通信是一种网络编程技术,允许两个或更多应用程序通过网络进行数据交换。 ...
纯API实现Socket代码,老外写的100多K那个,还算能用。但是存在win7和win10的兼容问题,还有127.0.01IP无效等问题。经过深入研究通讯机制好几天,重写的代码兼容性很好。特别是消息回调机制,思路很新奇。不用拦截...
在本文中,我们将深入探讨如何使用API来实现Socket通信,特别关注使用Delphi 2010编写的示例。Socket编程是网络编程的基础,允许应用程序通过网络发送和接收数据。 首先,我们需要理解Socket接口,这是由Berkeley...
本篇文章将深入探讨VB中封装Winsock API的Socket连接类,帮助你理解其工作原理和应用。 Winsock,即Windows Socket,是微软为Windows操作系统提供的TCP/IP协议接口。它提供了一套标准的应用程序编程接口(API),...
SuperSocket是一个高度可扩展的、轻量级的C#套接字服务器应用框架,而.NET 5是微软推出的跨平台开发框架,用于构建各种类型的应用程序,包括Web API服务。 首先,我们需要理解.NET 5 Web API的基本概念。Web API是...
Socket API封装类是一种在编程中实现网络通信的重要技术,它主要应用于不使用MFC(Microsoft Foundation Classes)框架的场景。MFC是微软提供的一种C++库,用于简化Windows应用程序的开发,但并不是所有开发者都会...
Socket API 是一种在计算机网络中实现进程间通信(IPC)的技术,主要用于构建客户端-服务器(Client-Server)架构的应用程序。在本资料中,我们主要关注如何使用 Socket API 在TCP协议的基础上实现类似QQ的网络通信...
本文旨在深入探讨WinSock API的相关知识点,并进一步讲解如何设计和实现SOCKET类。 ##### WinSock API简介 **WinSock API**是一系列函数的集合,它基于UNIX平台下的Berkeley Socket API,并针对Microsoft Windows...
WinSock(Windows Socket)是微软在Windows操作系统上实现的一套网络通信API,它遵循了Berkeley Sockets接口标准,使得Windows程序员可以使用熟悉的Socket接口进行网络编程。Win32 API中的WinSock提供了一种标准的...
MFC API中的socket通信是指使用MFC类库来实现基于套接字的网络通信。套接字是网络编程的基本接口,允许应用程序通过网络发送和接收数据。在这个“MFC API socket通讯源码”中,我们可能会看到一个简单的服务器和...
1. **导入API函数**:Delphi允许通过`uses`关键字引入Windows API头文件,如`WinSock2`和`MSWSock`,这包含了用于Socket编程的函数,如`socket`、`bind`、`listen`、`accept`、`connect`、`send`和`recv`等。...
然而,MFC中的`CSocket`类是对操作系统底层Socket API的简单封装,有时开发者可能需要更直接地使用Socket API来获取更精细的控制或解决特定问题。本篇文章将深入探讨如何在MFC应用中利用原始的Socket API进行编程。 ...
Socket.IO API 提供了多种传输机制,以确保数据在客户端(通常是浏览器)和服务器之间可靠地传递。 1. **Socket对象** Socket.IO 的核心是 `Socket` 对象,它是客户端与服务器之间的主要交互点。`Socket` 提供了...
2. **C++ API**: C++ API是指C++语言中的应用程序编程接口,它提供了一系列预定义的函数、类和对象,供开发者使用。在WSA中,这些API用于创建、配置和管理套接字,以及进行数据传输。 3. **Socket API**: Socket ...
在Linux系统中,C语言的Socket API是进行网络通信的核心工具,它允许程序员创建和管理套接字,实现客户端和服务器之间的数据交换。本篇将深入探讨Linux C Socket API的关键概念、常用函数以及其实现机制。 一、...
在IT领域,网络编程是构建分布式系统和网络应用的基础,而Win32 Socket API是Windows平台上进行网络通信的重要工具。本篇文章将全面介绍如何利用Win32 Socket API进行网络编程,特别是涉及阻塞和非阻塞模式,以及两...
Socket API是计算机网络编程中的一个重要概念,特别是在C++这样的编程语言中,用于创建网络通信的应用程序。本资源包含了"C++编写的Socket_api使用源代码",涵盖了客户端(Client0)和服务器端(Server0)的实现,...
总的来说,C#的网络编程主要是通过Socket类来实现的,它提供了一套全面的API,使得开发者能够方便地创建各种网络应用程序,包括但不限于HTTP服务器、聊天应用、文件传输服务等。虽然对于不熟悉Winsock API的开发者来...
Socket API是网络编程中的基础部分,用于实现进程间的通信,使得计算机可以通过网络互相连接和交换数据。本主题主要围绕如何使用Delphi的Socket API进行简单的数据收发。 首先,了解Socket API的基本概念是必要的。...