IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 16.网络服务端与客户端 -> 正文阅读

[网络协议]16.网络服务端与客户端

ServerSocket服务端 Socket客户端

1.服务端程序创建ServerSocket对象,调用accept()方法,等待客户端连接。

2.客户端程序创建Socket对象并请求与服务端建立连接。

3.服务端接收客户端的连接请求,并创建新的Socket对象与客户端建立专线连接。

4.实现(2)和(3)步骤中建立连接的两个Socket类在同一线程上对话。

5.服务端重新等待新的连接请求。


服务端ServerSocket对象用户监听是来自客户端的Socket类连接,如果没有连接,它会一直处于等待状态。

方法说明
public ServerSocket(int port)构造方法,用指定port(端口)创建ServerSocket类
public Socket accept()接收客户端的Socket类请求
public InetAddress getInetAddress()返回服务端主机IP地址
public void close()关闭ServerSocket类

客户端使用Socket类连接到指定的服务端,每个Socket对象代表一个客户端

方法说明
public Socket(String host,int port)构造方法,创建连接到指定远程主机和端口的Socket实例,传入host(主机IP)和port(端口)
public InputStream getInputStream()返回该Socket对象对应的输入流
public OutputStream()返回该Socket对象对应的输出流
public void close()关闭当前的Socket



服务端:

public static void main(String[] args){
		ServerSocket server = null;
		BufferedReader reader = null;
		String data = null;
		try {
			//创建客户端套接字,监听端口8888
			server = new ServerSocket(8888);
			while(true) {
				//接收客户端的连接
				Socket socket = server.accept();
				//获取客户端的输入流
				InputStream in = socket.getInputStream();
				//将字节流包装成字符流
				reader = new BufferedReader( new InputStreamReader(in) );
				//判断输入流内的数据是否读取完毕
				while( (data = reader.readLine()) != null ) {
					System.out.println("客户端:"+data);
				}
				break;
			}
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			try {
				if( reader != null ) {
					reader.close();
				}
				server.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

客户端:

public static void main(String[] args) {
		Socket  client = null;
		PrintWriter writer = null;
		try {
			//创建客户端套接字,并连接服务器
			client = new Socket("127.0.0.1",8888);
			//创建一个可以向服务器发送数据的输出对象
			writer = new PrintWriter(client.getOutputStream());
			//向服务端写入数据
			writer.write("halo");
			//清空输出缓存
			writer.flush();
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			try {
				if( writer!=null ) {
					writer.close();
				}
				client.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章           查看所有文章
加:2022-02-06 14:07:32  更:2022-02-06 14:08:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/5 11:27:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码