Socket和ServerSocket的简单介绍及例子

Socket和ServerSocket的简单介绍及例子Socket 类 socket 可以使一个应用从网络中读取和写入数据 不同计算机上的两个应用可以通过连接发送和接受字节流 当发送消息时 你需要知道对方的 ip 和端口 在 java 中 socket 指的是 java net Socket 类 在 java net Socket 中 可以看到 socket 有多种构造函数 以 publicSocket Stringhost int

自制工具   翰华Box:https://hanhuabox.lanzous.com/b00zjq9uf

翰华Box – 开发日志:https://blog.csdn.net/_/article/details/

【翰华Box】RPG移动迷宫:https://blog.csdn.net/_/article/details/

Socket 类

  

ServerSocket类

ServerSocket详解:https://www.jianshu.com/p/c2e784

ServerSocket serverSocket=new ServerSocket(); serverSocket.setReuseAddress(true); //设置 ServerSocket 的选项 serverSocket.bind(new InetSocketAddress(8080)); //与 8080 端口绑定

把以上程序改成

ServerSocket serverSocket=new ServerSocket(8080); serverSocket.setReuseAddress(true); //设置 ServerSocket 的选项
  •  
ServerSocket serverSocket = new ServerSocket(port,3); 
package com.zhoufenqin.socket.client; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; public class Client { public static final int port = 8080; public static final String host = "localhost"; public static void main(String[] args) { System.out.println("Client Start..."); while (true) { Socket socket = null; try { //创建一个流套接字并将其连接到指定主机上的指定端口号 socket = new Socket(host,port); //读取服务器端数据 BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); //向服务器端发送数据 PrintStream out = new PrintStream(socket.getOutputStream()); System.out.print("请输入: \t"); String str = new BufferedReader(new InputStreamReader(System.in)).readLine(); out.println(str); String ret = input.readLine(); System.out.println("服务器端返回过来的是: " + ret); // 如接收到 "OK" 则断开连接 if ("OK".equals(ret)) { System.out.println("客户端将关闭连接"); Thread.sleep(500); break; } out.close(); input.close(); } catch (Exception e) { System.out.println("客户端异常:" + e.getMessage()); } finally { if (socket != null) { try { socket.close(); } catch (IOException e) { socket = null; System.out.println("客户端 finally 异常:" + e.getMessage()); } } } } } } 
  •  

Server代码:

package com.zhoufenqin.socket.server; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; public class Server { public static final int port = 8080;//监听的端口号 public static void main(String[] args) { System.out.println("Server...\n"); Server server = new Server(); server.init(); } public void init() { try { //创建一个ServerSocket,这里可以指定连接请求的队列长度 //new ServerSocket(port,3);意味着当队列中有3个连接请求是,如果Client再请求连接,就会被Server拒绝 ServerSocket serverSocket = new ServerSocket(port); while (true) { //从请求队列中取出一个连接 Socket client = serverSocket.accept(); // 处理这次连接 new HandlerThread(client); } } catch (Exception e) { System.out.println("服务器异常: " + e.getMessage()); } } private class HandlerThread implements Runnable { private Socket socket; public HandlerThread(Socket client) { socket = client; new Thread(this).start(); } public void run() { try { // 读取客户端数据 BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); String clientInputStr = input.readLine();//这里要注意和客户端输出流的写方法对应,否则会抛 EOFException // 处理客户端数据 System.out.println("客户端发过来的内容:" + clientInputStr); // 向客户端回复信息 PrintStream out = new PrintStream(socket.getOutputStream()); System.out.print("请输入:\t"); // 发送键盘输入的一行 String s = new BufferedReader(new InputStreamReader(System.in)).readLine(); out.println(s); out.close(); input.close(); } catch (Exception e) { System.out.println("服务器 run 异常: " + e.getMessage()); } finally { if (socket != null) { try { socket.close(); } catch (Exception e) { socket = null; System.out.println("服务端 finally 异常:" + e.getMessage()); } } } } } } 
  •  

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/199354.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午1:17
下一篇 2026年3月26日 下午1:17


相关推荐

  • 安全帽识别系统-智慧工地的守护者

    安全帽识别系统-智慧工地的守护者安全帽识别系统能够实时对未佩戴安全帽的行为发出警告,及时提醒监理人员处理,为作业人员筑起一道人工智能的安全防火墙。鹰眸安全帽识别系统面世之后,在业界引起了不小的震动,相关企业不但积极推广,还提出了许多建设性的意见,毕竟将人工智能的深度学习应用于视频分析还是很新的事物,那么鹰眸安全帽识别系统能做什么,在此与大家一起分享,希望起到抛砖引玉的作用。一、鹰眸安全帽识别系统通过视频实时分析工作区域,如…

    2022年5月15日
    48
  • 解决Cannot resolve plugin org.apache.maven.plugins:maven-compiler-plugin:3.1问题

    解决Cannot resolve plugin org.apache.maven.plugins:maven-compiler-plugin:3.1问题

    2021年10月2日
    109
  • linux 添加用户到组命令,linux下添加用户组和用户

    linux 添加用户到组命令,linux下添加用户组和用户1 linux 下文件权限管理 添加用户组并添加用户添加组 groupadd 组名 groupadddepl etc group grepdeploy 如图 删除组 groupdel 组名 groupdeldepl etc group grepdeploy 查询组 cat etc group 或者使用管道来精确查询 cat etc group grepdev

    2026年2月15日
    2
  • 爆肝两万字,我爷爷都看的懂的《栈和队列》,建议各位观众姥爷先收藏

    爆肝两万字,我爷爷都看的懂的《栈和队列》,建议各位观众姥爷先收藏文章目录一、栈????栈的概念及结构????栈的实现二、队列????队列的概念及结构????队列的实现三、栈和队面试题四、概念选择题????1????2一、栈????栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称库栈底。栈中的数据元素遵守后进先出LIFO(LastInFirstOut)的原则栈有两个经典的操作1️⃣压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。2️⃣出栈:栈的删除操

    2022年6月2日
    40
  • 在线客服系统源码demo/PHP客服系统下载附php源码「建议收藏」

    在线客服系统源码demo/PHP客服系统下载附php源码「建议收藏」在线客服系统软件为每个客户提供个性化的一对一支持。在线客服系统源码安装实时聊天小部件在尽可能多的网站和博客上并可定制聊天小部件完全适合您的网站。从一系列颜色和选项混合搭配。在线客服系统附源码演示及下载地址:ym.ws58.net在线客服系统源码H5通过为常见答案和回复创建快捷方式来节省时间。基于thinkphp在网页线客服完整源码下载地址:ym.ws58.net在聊天室里点击一个按钮就可以看到这些,只需单击一次即可将聊天内容传送到其他代理。团队合作以取悦顾客。实时聊天小部件跟踪访问者浏览您.

    2022年7月19日
    23
  • 分位数的简单理解

    分位数的简单理解在统计学里经常提到分位数的概念 下面我们通过一个例子来简单解释一下 假设有一千名学生参加了某次考试 学生 A 得了 75 分 排名 603 603 1000 60 3 学生 B 得了 94 分 排名 28 28 1000 2 8 此时 A 大约在 60 3 的位置上 而 B 大约在 2 8 的位置上 即在 60 3 的位置上约 75 分 2 8 的位置上约 94 分 对应四分位数的就很好解释了 分别在 25 50 75

    2026年3月20日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号