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

    }
    }

  • 相关阅读:
    Flutter form 的表单 input
    FloatingActionButton 实现类似 闲鱼 App 底部导航凸起按钮
    Flutter 中的常见的按钮组件 以及自 定义按钮组件
    Drawer 侧边栏、以及侧边栏内 容布局
    AppBar 自定义顶部导航按钮 图标、颜色 以及 TabBar 定义顶部 Tab 切换 通过TabController 定义TabBar
    清空路由 路由替换 返回到根路由
    应对ubuntu linux图形界面卡住的方法
    [转] 一块赚零花钱
    [转]在树莓派上搭建LAMP服务
    ssh保持连接
  • 原文地址:https://www.cnblogs.com/curedfisher/p/11833808.html
Copyright © 2011-2022 走看看