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

    }
    }

  • 相关阅读:
    Git最强总结!
    强烈IDEA这些插件,让你的开发速度飞起来!
    MySQL执行计划【explain】详解
    设置php在apache下加载ini配置文件路径,~和curl扩展无法加载的问题
    远程连接mysql数据慢的问题
    在windows下,git webhook使用php拉取代码的学习总结
    centos 添加epel、remi仓库和ELRepo仓库
    windows下mysql数据库表名大小写不敏感
    .gitignore无效,不能过滤某些文件
    编译php时,出错bad interpreter
  • 原文地址:https://www.cnblogs.com/curedfisher/p/11833808.html
Copyright © 2020-2023  润新知