java eclipse 简单的局域网聊天 webservice

来源:互联网 发布:java分布式开发是什么 编辑:程序博客网 时间:2024/06/07 10:05


1.创建一个java project 项目,创建Client和Server 两个类

2.Client 类的内容

package web_service;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class WeatherClient {
 public static void main(String[] args) throws UnknownHostException, IOException{
  Scanner in = new Scanner(System.in);
       

        //1.创建Socket对象,和服务端建立连接

        Socket socket = new Socket("192.168.8.235",12345);
        DataInputStream dis = null;
        DataOutputStream dos = null;

        //2.发送城市名称
        boolean falg = true;
        while (falg) {
   
         dos = new DataOutputStream(socket.getOutputStream());
         String clientMessageString = in.next();
         dos.writeUTF(clientMessageString);
         
         //System.out.println("请求查询天气: 北京");
         
         
         
         //3.接受返回结果使用输入流
         
         dis = new DataInputStream(socket.getInputStream());
         
         String result = dis.readUTF();
         
         System.out.println(result);
         
         if ("exit".equals(clientMessageString)) {
          //4.关闭流
          
          dis.close();
          
          dos.close();
          falg = false;
         }
  }

        

       

    }
}

3.Server类的内容

package web_service;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class WeatherServer {
 public static void main(String[] args) throws IOException{
  final Scanner in = new Scanner(System.in);


  // 1.创建ServerSocket对象

  ServerSocket serverSocket = new ServerSocket(12345);


  while(true){


   // 2.等待客户端连接,阻塞的方法

   final Socket socket = serverSocket.accept();


   Runnable runnable = new Runnable(){

    @Override

    public void run(){

     try{
      boolean falg = true;
      DataInputStream dis = null;
            DataOutputStream dos = null;
      while (falg) {
       
       dis = new DataInputStream(socket.getInputStream());
       
       String cityName = dis.readUTF();
       
       System.out.println(cityName);
       
       
       
       
       
       
       // 4.根据城市名查询天气
       
       String result = in.next();
       
       System.out.println(result);
       
       
       
       // 5.返回查询结果,使用输出流。
       
       dos = new DataOutputStream(socket.getOutputStream());
       
       dos.writeUTF(result);
       
       if ("exit".equals(cityName)) {
        // 6.关闭流
        System.out.println(cityName);
        dis.close();
        
        dos.close();
        falg = false;
       }
      }

      // 3.使用输入流接受客户端发送的请求



      

     }catch(Exception e){

      e.printStackTrace();

     }

    }

   };


   //启动线程

   new Thread(runnable).start();


  }

 }
}

4.先运行Server 再运行Client  客户端像服务端发送消息,服务端接受消息,也可以回复客户端。当客户端输入exit 客户端停止运行。





0 0
原创粉丝点击