首页 > 代码库 > 03_天气查询_socket方式模拟_多线程方式
03_天气查询_socket方式模拟_多线程方式
【简述】
要重视Socket开发,企业后台服务特长使用Socket。
1.服务端要有可持续运行能力,保证线程一致在运行
2.并发处理能力,使用多线程
【工程截图】
【WeatherRunner.java】
package com.Higgin.socket.Runnable;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.Socket;/** * 执行天气的查询 * @author YH * */public class WeatherRunnable implements Runnable{ private Socket socket; //通过构造方法注入Socket public WeatherRunnable(Socket socket){ this.socket=socket; } @Override public void run() { DataInputStream dataInputStream=null; DataOutputStream dataOutputStream=null; try { //接受客户端的而请求数据 dataInputStream=new DataInputStream(socket.getInputStream()); //客户端发送城市的名称 String cityName=dataInputStream.readUTF(); System.out.println("from client...."+cityName); //向客户端发送数据 dataOutputStream =new DataOutputStream(socket.getOutputStream()); //查询天气信息 String result="晴天"; //向客户端回应 dataOutputStream.writeUTF(result); System.out.println("to client..."+result); } catch (Exception e) { e.printStackTrace(); }finally{ //释放资源 try { dataInputStream.close(); dataOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } } }}
【WeatherServer.java】
package com.Higgin.socket;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;import com.Higgin.socket.Runnable.WeatherRunnable;public class WeatherServer { public static void main(String[] args) throws IOException { //创建天气服务 //应用服务端口建议在10000以上 ServerSocket serverSocket=new ServerSocket(12345); System.out.println("启动天气查询服务...."); Socket socket=null; while(true){ try { //接受客户端链接 socket =serverSocket.accept(); //开启一个新的线程,使用多线程的方式 new Thread(new WeatherRunnable(socket)).start(); } catch (Exception e) { e.printStackTrace(); } } }}
【WeatherClient.java】
package com.Higgin.socket;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.Socket;public class WeatherClient { public static void main(String[] args) throws IOException { //创建socket连接 Socket socket=null; DataInputStream dataInputStream=null; DataOutputStream dataOutputStream=null; //模拟多次请求,实际上可以多编译运行几次,利用cmd for(int i=0;i<100;i++){ try{ socket =new Socket("127.0.0.1",12345); //向服务端发送数据 dataOutputStream =new DataOutputStream(socket.getOutputStream()); //城市名称 String cityName="北京"; dataOutputStream.writeUTF(cityName); System.out.println("to Server.."+cityName); //接受服务端的返回数据 dataInputStream=new DataInputStream(socket.getInputStream()); String result=dataInputStream.readUTF(); System.out.println("from server ..."+result); }catch(Exception e){ e.printStackTrace(); }finally{ //释放资源 dataInputStream.close(); dataOutputStream.close(); socket.close(); } } }}
03_天气查询_socket方式模拟_多线程方式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。