当前位置: 首页 > news >正文

服务器段的连接端口和监听端口编程实现

        new ServerSocket(int)是开启监听端口,并不是连接端口。真正的连接端口是随机开辟的空闲端口,当连接创建完成后,监听关口可以继续等待下一次连接请求,处于空闲等待状态。

编程实现方式

1 、主线程一直处于阻塞等待状态,如果一旦链接成功则启动一个新线程对外提供服务。
2 、启动工作线程时将链接对象 Socket 传递过去,在 run 方法中执行处理逻辑。

服务器编程实现

public class MyServer {public static void main(String[] args) throws IOException {ServerSocket serverSocket = new ServerSocket(9000);while (true){Socket scoket = serverSocket.accept();new WorkThread(scoket).start();}}
}
class WorkThread extends Thread{private Socket scoket;public WorkThread(Socket scoket){this.scoket = scoket;}@Overridepublic void run() {try {InputStream is = scoket.getInputStream();OutputStream os = scoket.getOutputStream();BufferedReader br = new BufferedReader(new InputStreamReader(is));PrintWriter out = new PrintWriter(os);String str = br.readLine();out.println("收到"+str);out.flush();out.close();br.close();scoket.close();} catch (IOException e) {System.out.println(e.getMessage());}}
}

客户端编程实现

public class MyClient {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));System.out.println("你想给服务器说:");String str1 = br.readLine();Socket socket = new Socket("localhost",9001);System.out.println(socket.getInetAddress());System.out.println(socket.getPort());InputStream is = socket.getInputStream();OutputStream os = socket.getOutputStream();BufferedReader br2= new BufferedReader(new InputStreamReader(is));PrintWriter out = new PrintWriter(os);out.println(str1);out.flush();String str2 = br2.readLine();System.out.println(str2);br2.close();out.close();br.close();}
}

http://www.lryc.cn/news/316699.html

相关文章:

  • 用“定时执行专家”武装你的电脑,做时间管理大师!
  • css3实现3D立方体旋转特效源码
  • 计算器系统基础知识-校验码
  • springboot换日志框架后爆SLF4J: Class path contains multiple SLF4J bindings的解决办法
  • k8s+zabbix
  • k8s-生产级的k8s高可用(2) 25
  • ubuntu20.04 创建ros环境、创建rospackage
  • QT进阶---------pro项目文件中的常用命令 (第三天)
  • php常用设计模式应用场景及示例
  • 浏览器与服务器通信过程(HTTP协议)
  • Pytorch搭建AlexNet 预测实现
  • 笔记:使用parfile进行的数据导入导出
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的行人跌倒检测系统(深度学习+UI界面+完整训练数据集)
  • Ubuntu 14.04:PaddleOCR基于PaddleServing的在线服务化部署(失败)
  • Java JUC 笔记(2)
  • webpack5高级--02_提升打包构建速度
  • MAC M芯片 Anaconda安装
  • 【JS】自动下拉网页刷新,当出现指定关键字,就打印出来
  • 中兴通讯联手新疆移动,开通全疆首个乡农场景700M+900M双频双模基站
  • 爬虫案例4: parsel 模块的运用
  • 数据结构·复杂度
  • 数学建模理论与实践国防科大版
  • Yakit爆破模块应用
  • 【3GPP】【核心网】【5G】NAS连接管理和UE注册管理状态(超详细)
  • 细粒度IP定位参文2(Corr-SLG):A street-level IP geolocation method (2021年)
  • Mac上使用M1或M2芯片的设备安装Node.js时遇到一些问题,比如卡顿或性能问题
  • 学习vue3第四节(ref以及ref相关api)
  • 关于电脑无法开启5G频段热点的解决方案
  • 清理磁盘空间 - Win系统
  • 科技革新的引擎-2024年AI辅助研发趋势