JavaSocket编程单客户端与多客户端实现

1.JavaSocket相关API

构造方法
Socket():创建一个无连接socket,使用系统默认类型SocketImpl
Socket(InetAddress address, int port):创建一个流套接字,使用指定端口号和IP地址进行连接
Socket(InetAddress address, int port,InetAddress localAddr, int localPort):创建一个套接字并将其连接到指定远程地址上的指定远程端口
Socket(String host, int port):创建一个流套接字,连接到指定端口和命名主机
Socket(String host, int port,InetAddress localAddr, int localPort):创建一个套接字,并使用指定的远程端口连接到指定的远程主机
说明:在构造方法中,host、address和port分别指在双向连接中另一方的主机、IP地址和端口号;stream指明是流socket还是数据报socket;localPort表示本地主机的端口号;localAddr和bindAddr是本地机器的地址;SocketImpl是socket的父类,既可以用来创建ServerSocket,又可以用来创建Socket;count则表示服务端所能支持的最大连接数。

常用方法
void bind(SocketAddress**** bindpoint)
功能:绑定socket到本地地址。
例如:socket.bind(bindpoint)
void close()
功能:关闭socket。
例如:socket. close ();
InetAddress getInetAddress()
功能:返回某个socket所连接的地址
例如:InetAddress address = socket.getInetAddress()
InputStream getInputStream()
功能:获得socket连接输入,同时返回一个InputStream对象实例
例如: bufferedReader= new BufferedReader(newInputStreamReader(socket.getInputStream(),"UTF-8"))
OutputStream getOutputStream()
功能:socket连接的另一端将得到输入,同时返回一个OutputStream对象实例
**例如:printWriter= new PrintWriter(socket.getOutputStream());
int getPort()
功能:获取socket连接端口号。
例如:socket. getPort();
boolean isClosed()
功能:获取socket连接是否关闭,已关闭返回true。
例如:socket. isClosed();
boolean isConnected()
功能:获取socket连接是否是连接状态,已连接返回true。
例如:socket. isConnected();


2.单客户端实例

基本的单客户端/单服务器端程序,主要实现服务器端一直监听某个端口,并等待客户端连接请求。客户端使用IP和Port连接服务器端,并向服务器端"say Hello",并接收到服务器端返回信息,结束对话。该服务器端只能接受一个客户端连接。
SocketClient客户端


JavaSocket编程单客户端与多客户端实现_第1张图片
SocketClient客户端

SocketServer服务端


JavaSocket编程单客户端与多客户端实现_第2张图片
SocketServer服务端

3.多客户端实例

服务器端程序Server监听某一个端口,当客户端Client1发起连接请求时,Server接收请求,同时构造一个线程类,用于同Client1进行会话。当一个新的客户端Client2发起请求时,同样处理,服务器Server处理每个请求并分别返回消息,若客户端申请关闭,则服务器关闭该连接,双方通信结束。
SocketClient客户端


JavaSocket编程单客户端与多客户端实现_第3张图片
SocketClient客户端

SocketServer服务端


JavaSocket编程单客户端与多客户端实现_第4张图片
SocketServer服务端

本订阅号提供Java相关技术分享,从Java编程基础到Java高级技术,从JavaWeb技术基础Jsp、Servlet、>JDBC到SSH、SSM开发框架,从REST风格接口设计到分布式项目实战。剖析主流开源技术框架,用亲身
实践来谱写深度Java技术日志。

JavaSocket编程单客户端与多客户端实现_第5张图片
Java技术日志

欢迎关注 Java技术日志 微信订阅号

你可能感兴趣的:(JavaSocket编程单客户端与多客户端实现)