java socket 线程池_带线程池的socket客户端与服务端

前言

socket(套接字),Socket和ServerSocket位于java.net包中,之前虽然对socket有过一些了解,但一直都是云里雾里的,特意仔细的学习了一个socket,用socket模拟一个天气查询的功能,并且解决了几个使用socket过程中比较严重的问题。

最简单的客户端和服务端

服务端代码

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecn.hucc.socket.server;2

3 importjava.io.DataInputStream;4 importjava.io.DataOutputStream;5 importjava.io.IOException;6 importjava.net.ServerSocket;7 importjava.net.Socket;8

9 /**

10 *11 * @auth hucc12 * @date 2015年10月10日13 */

14 public classWeatherServer {15

16 private static final int PORT = 8888;17

18 public static voidmain(String[] args) {19

20 ServerSocket server = null;21 Socket socket = null;22 DataInputStream dataInputStream = null;23 DataOutputStream dataOutputStream = null;24 try{25 server = newServerSocket(PORT);26 System.out.println("天气服务端已经移动,监听端口:" +PORT);27 socket =server.accept();28

29 //接受客户端请求

30 dataInputStream = newDataInputStream(socket.getInputStream());31 String request =dataInputStream.readUTF();32 System.out.println("from client..." +request);33

34 //响应客户端

35 dataOutputStream = newDataOutputStream(socket.getOutputStream());36 String response = "天气:晴朗,温度:36度";37 dataOutputStream.writeUTF(response);38

39 } catch(IOException e) {40 e.printStackTrace();41 } finally{42 try{43 if (dataInputStream != null) {44 dataInputStream.close();45 }46 if (dataOutputStream != null) {47 dataOutputStream.close();48 }49 } catch(IOException e) {50 e.printStackTrace();51 }52 }53 }54 }

View Code

服务端代码很简单,这里没有直接使用InputStream和OutputStream两个流,而是使用了DataInputStream和DataOutputStream两个类,通过readUTF()和writeUTF()两个方法免去转码的痛苦。

客户端代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值