Socket套接字的使用小例子
2016-02-29 17:06
232 查看
Socket用来描述IP地址和端口,用来实现不同虚拟机或不同计算机之间的通信。下面是用java语言写的两个主函数,分别模拟服务器端和客户端。
ServerThread.java
Server.java
Client.java
ServerThread.java
public class ServerThread extends Thread { Socket socket = null; public ServerThread(Socket socket) { this.socket = socket; } @Override public void run() { InputStream is = null; InputStreamReader isr = null; BufferedReader br = null; OutputStream os = null; PrintWriter pw = null; try { // 获取客户端的请求信息 is = socket.getInputStream(); isr = new InputStreamReader(is); br = new BufferedReader(isr); String info = null; while((info=br.readLine())!=null) { System.out.println("我是服务端, 客户端说: " + info); } socket.shutdownInput(); // 向客户端发送信息: os = socket.getOutputStream(); pw = new PrintWriter(os); pw.write("欢迎您......."); pw.flush(); } catch (IOException e) { e.printStackTrace(); } finally { try { if(pw!=null) pw.close(); if(os!=null) os.close(); if(br!=null) br.close(); if(isr!=null) isr.close(); if(is!=null) is.close(); if(socket!=null) socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }
Server.java
public class Server { public static void main(String[] args) { try { // 创建服务器端的Socket, ServerSocket, 指定绑定的端口, ServerSocket serverSocket = new ServerSocket(8888); System.out.println("服务端,正在等待客户端的响应......"); Socket socket = null; int count = 0; while(true) { // 调用accept()方法监听,等待客户端连接 socket = serverSocket.accept(); ServerThread serverThread = new ServerThread(socket); serverThread.start(); System.out.println(count++); } } catch (IOException e) { e.printStackTrace(); } } }
Client.java
public class Client { public static void main(String[] args) { try { // 客户端socket 包含服务器的URL和端口号 Socket socket = new Socket("localhost", 8888); // 向服务器发送请求 OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os); pw.write("用户名:admin----密码:134323"); pw.flush(); socket.shutdownOutput(); // 获得服务端的响应内容 InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String info = null; while((info = br.readLine()) != null) { System.out.println("客户端,服务端说: " + info); } // 关闭流 pw.flush(); os.close(); pw.close(); is.close(); isr.close(); br.close(); socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
相关文章推荐
- 使用NSTimer实现倒计时-备
- Zookeeper实现集群和负载均衡----(1)现状分析
- Leetcode:237. Delete Node in a Linked List(JAVA)
- 老李分享:jvm内存原型剖析
- openGL之深度测试、表面剔除、剪裁---openGL学习笔记(五)
- maven 转myeclipse eclipse 项目 命令
- EXP/IMP迁移数据库的时候注释乱码解决方法
- OpenCV仿射变换+投射变换+单应性矩阵
- 网址URL中特殊字符转义编码
- 《Android开发精要》读书笔记——Android的系统架构
- Ajax 整体结构
- Spark1.0 安装
- iOS开发--开源库
- 性能测试培训:定位jvm耗时函数
- HDMI之EDID使用说明
- 网卡接口相关定义
- JS 循环遍历JSON数据
- centos6.5 Memcache的安装
- 使用Java构建微服务
- 我的开心的事情