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

    }
    }

  • 相关阅读:
    C#来完成二叉树的搜索、遍历、及查找
    给大家推荐个学英语的网站
    我一直在心酸——有感于512大地震
    LINQ基础(一)
    再谈奶牛问题
    【转】程序员的十层楼,你属于哪一层?
    c#实现根据有规律的文件内容解析成实体类
    c#多线程操作界面控件的简单实现
    不要迷恋哥,哥不只是传说(再【转】世界上最牛的程序员)
    c#简单实现提取网页内容
  • 原文地址:https://www.cnblogs.com/curedfisher/p/11833808.html
Copyright © 2011-2022 走看看