• java socket编程


      对于java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket,服务端客户端通过Socket建立连接就可以通信了。首先,ServerSocket在服务器监听某端口,当发现客户端有某Socket试图连接ServerSocket时,它会accept该请求,同时在服务端建立一个Socket与之通信,这样客户端和服务端各有一个Socket。

      Socket之间通信其实就是客户端往Socket的输出流写内容,服务端就可以从输出流里读取对应内容。而且Socket与Socket之间是双向连通的,所以客户端也可以往对应的Socket输出流里面写东西,然后服务端对应的Socket的输入流就可以读出对应的内容。不多说,上例子:

    服务端:  

    public class Server {

    public static void main(String args[]) throws IOException {
    int port = 8090;
    //定义一个ServerSocket监听在端口8090上
    ServerSocket server = new ServerSocket(port);
    //server尝试接收其他Socket的连接请求,server的accept方法是阻塞式的,服务端没接收到客户端发送的信息,就会一直监听,除非关闭输出流
    Socket socket = server.accept();
    //获取socket的InputStream,并从中读取客户端发过来的信息了。
    Reader reader = new InputStreamReader(socket.getInputStream());
    char chars[] = new char[64];
    int len;
    StringBuilder sb = new StringBuilder();
    while ((len=reader.read(chars)) != -1) {
    sb.append(new String(chars, 0, len));
    }
    System.out.println("from client: " + sb);
    reader.close();
    socket.close();
    server.close();
    }
    }

    客户端:

    public class Client {
    public static void main(String args[]) throws Exception {
    String host = "127.0.0.1"; // 要连接的服务端IP地址
    int port = 8090; // 要连接的服务端对应的监听端口
    // 与服务端建立连接
    Socket client = new Socket(host, port);
    // 建立连接后就可以往服务端写数据了
    Writer writer = new OutputStreamWriter(client.getOutputStream());
    writer.write("我是中国人,我爱自己的祖国");
    writer.flush();// 写完后要记得flush
    writer.close();
    client.close();
    }
    }

    服务启动后,客户端运行服务端console窗口便会打印客户端发送的消息:

    from client: 我是中国人!

    种桃道士归何处,前度刘郎今又来。
  • 相关阅读:
    生成器
    装饰器
    类的特殊方法
    获取对象的信息之反射
    获取对象信息之内置函数dir()
    获取对象的信息之内置函数type()
    获取对象的信息之内置函数issubclass() 和 isinstance()
    生成可下载图片
    js数组常用方法
    sql存储过程基本语法
  • 原文地址:https://www.cnblogs.com/jianwei-dai/p/4812783.html
Copyright © 2020-2023  润新知