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();
    }
    }

    }
    }

  • 相关阅读:
    编译安装mysql5.7.9
    配置阿里云作为yum 源
    python 序列类型
    python 数据类型之list
    python 数据类型之数float
    深度学习与中文短文本分析总结与梳理
    相似度的算法(欧几里德距离和皮尔逊算法)
    人工智能(Machine Learning)—— 机器学习
    python设置redis过期时间
    K-均值聚类(K-means)算法
  • 原文地址:https://www.cnblogs.com/curedfisher/p/11833808.html
Copyright © 2011-2022 走看看