zoukankan      html  css  js  c++  java
  • Socket

    1.使用socket 时,必须自己做数据的读取与解析

    2.项目目录

     3.服务端代码:

    package com.test;

    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;

    public class SocketServer {
    public static void main(String[] args) throws Exception {
    //启动socket服务端,,建议1万以上
    ServerSocket serverSocket=new ServerSocket(12345);
    System.out.println("服务端已启动");
    DataOutputStream dataOutputStream=null;
    DataInputStream dataInputStream=null;
    while(true) {
    try {
    //监听客户端连接
    //accept()是一个阻塞方法
    Socket socket=serverSocket.accept();
    System.out.println("客户端连接上,才会输出这里的内容");

    //输入流,使用此流接收数据
    dataInputStream=new DataInputStream(socket.getInputStream());
    //得到输出流,使用此流发送数据
    dataOutputStream=new DataOutputStream( socket.getOutputStream());

    //城市名称
    String city=dataInputStream.readUTF();
    System.out.println("from client.."+city);

    //查询天气
    String result="晴";
    //将天气查询结果发送给客户端
    dataOutputStream.writeUTF(result);

    } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    }finally {
    //资源释放
    if (dataInputStream!=null) {
    dataInputStream.close();
    }
    if (dataOutputStream!=null) {
    dataOutputStream.close();
    }
    }
    }
    }
    }
    4.客户端代码

    package com.test;

    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.net.Socket;

    /**
    * socket客户端
    * @author xjj13
    *
    *
    */
    public class SocketClient {
    public static void main(String[] args) throws Exception, Exception {
    //创建socket连接
    Socket socket=new Socket("127.0.0.1", 12345);
    DataOutputStream dataOutputStream=null;
    // DataInputStream 为包装类.为什么不用InputStream,因为接受数据时,用到字节数组,会造成乱码(一个汉子两个字节)
    DataInputStream dataInputStream=null;
    try {
    //发送数据
    //得到输出流
    dataOutputStream=new DataOutputStream(socket.getOutputStream());
    //发送一个城市名称
    String city="北京";
    dataOutputStream.writeUTF(city);
    System.out.println("to server..."+city);

    //接收数据
    //得到输入流
    dataInputStream=new DataInputStream(socket.getInputStream());
    //接收服务端返回天气的查询结果
    String result=dataInputStream.readUTF();
    System.out.println("from server..."+result);
    } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    }finally {
    if (socket!=null) {
    socket.close();
    }
    if(dataInputStream!=null) {
    dataInputStream.close();
    }
    if (dataOutputStream!=null) {
    dataOutputStream.close();
    }
    }

    }
    }

  • 相关阅读:
    替换掉一段 以 $ 开头 $ 结尾 的字符串
    react 中使用 codemirror2(在线代码编辑器)读取 yaml 文件
    第四篇:前端读取文件 | FileReader 对象及其属性
    umi 如何使用 Mock 模拟数据
    loading 动画 系列
    网站页面上标签页小图标的添加方式
    Linux tail命令
    Python实现字符串反转的方法
    Redis 配置远程访问
    消息队列
  • 原文地址:https://www.cnblogs.com/curedfisher/p/11833808.html
Copyright © 2011-2022 走看看