Java网络编程 - 服务器端和客户端的链接和信息传递实现

一、Client(客户端代码)java

package cn.qi.Client;

import java.io.*;
import java.net.Socket;

public class Client {
    Socket clientSocket;
    Client() {}

    public void write() throws IOException {
        // 创建链接到服务器端的socket
        clientSocket = new Socket("127.0.0.1",5000);

        // 客户端向服务器端发送消息,经过socket创建管道
        OutputStream os = clientSocket.getOutputStream();
        // 经过socket获取IO管道,纯IO操做
        PrintWriter pw = new PrintWriter(os);

        pw.write("hello");
        pw.flush();
        // 流的关闭
        pw.close();

        // 关闭socket链接
        clientSocket.close();
    }

    public void read() throws IOException {
        // 创建链接到服务器端的socket
        clientSocket = new Socket("127.0.0.1",5000);


        // socket实现纯IO
        InputStream is = clientSocket.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String st = br.readLine();
        br.close();
        System.out.println(st);

        // 关闭socket链接
        clientSocket.close();
    }

    public void writeAndRead() throws IOException {
        // 创建链接到服务器端的socket
        clientSocket = new Socket("127.0.0.1",5000);

        // 客户端向服务器端发送消息,经过socket创建管道
        OutputStream os = clientSocket.getOutputStream();
        // BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
        // bw.write("hello");
        // bw.write("\n");
        // bw.flush();
        PrintWriter pw = new PrintWriter(os);
        pw.write("hello");
        // 当服务器端用readline读取消息时,客户端发送消息时要附带换行符,不然服务器端就没法结束读取
        pw.write("\n");
        pw.flush();
        // 客户端与服务器端双向通讯时不能关闭IO流,不然默认认为想要关闭socket

        InputStream is = clientSocket.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String st = br.readLine();
        System.out.println(st);

        clientSocket.close();
    }
}

 

二、Server(服务器端代码)服务器

package cn.qi.Server;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    ServerSocket serverSocket;
    Server() {}

    public void sent() throws IOException {
        // 创建severSocket,监听对应端口
        serverSocket = new ServerSocket(5000);

        while(true) {
            // server监听端口,监听成功,生成socket
            Socket socket= serverSocket.accept();

            // 服务器端向客户端发送消息,经过socket创建管道
            OutputStream os = socket.getOutputStream();
            // 经过socket获取IO管道,纯IO操做
            PrintWriter pw = new PrintWriter(os);

            pw.write("hello");
            pw.flush();
            // 流的关闭
            pw.close();

            // 本次请求的socket的关闭
            socket.close();
        }

    }

    public void getInfo() throws IOException {
        // 创建severSocket,监听对应端口
        serverSocket = new ServerSocket(5000);


        while(true) {
            // server监听端口,监听成功,生成socket
            Socket socket= serverSocket.accept();

            // socket实现纯IO
            InputStream is = socket.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String st = br.readLine();
            br.close();

            System.out.println(st);

            // 本次请求的socket的关闭
            socket.close();
        }
    }

    public void readAndWrite() throws IOException {
        // 创建severSocket,监听对应端口
        serverSocket = new ServerSocket(5000);

        while(true) {
            // server监听端口,监听成功,生成socket
            Socket socket = serverSocket.accept();

            // socket实现纯IO
            InputStream is = socket.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String st = br.readLine();
            System.out.println(st);

            // 服务器端向客户端发送消息,经过socket创建管道
            OutputStream os = socket.getOutputStream();
            PrintWriter pw = new PrintWriter(os);
            pw.write("yes hello");
            pw.flush();
            pw.close();

            // 本次请求的socket的关闭
            socket.close();
        }
    }
}
相关文章
相关标签/搜索