java的Socket编程实现客户端与服务端的通信-----------多线程原型版

注:这个聊天不可以输空格。后续补充吧

,线程写在了一起,可读性有点低、、、

//服务端Server

import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

    public static void main(String[] args) {

        try {
            ServerSocket serverSocket = new ServerSocket(8888);
            System.out.println("服务器启动");
            Socket socket = serverSocket.accept();
            System.out.println("连接成功");
            new RecieveServer(socket).start();//启动一个发送线程
            new SendClient(socket).start();//启动一个接收线程


        }catch (Exception e){

            e.printStackTrace();
        }

    }

}
class RecieveServer extends  Thread{

    private Socket socket;

    public RecieveServer(Socket socket){
        this.socket=socket;
    }
    public void run(){

        try {
            InputStream inputStream;
            inputStream = socket.getInputStream();
            DataInputStream dataInputStream = new DataInputStream(inputStream);//借用高级输入流实现接收功能
            while(true) {
                String string = null;
                try {
                    string = dataInputStream.readUTF();//读取内容

                    System.out.println("接受的内容有:"+string);
                } catch (IOException e) {
                    e.printStackTrace();
                }


            }

        } catch (IOException e) {
            e.printStackTrace();
        }



    }

}
//客户端Client

import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class Client {

    public static void main(String[] args) {

        try{


            Socket socket = new Socket("127.0.0.1", 8888);//连接服务器
            new RecieveServer(socket).start();//启动发送线程
            new SendClient(socket).start();//启动接收线程


            System.out.println("连接成功服务器");


        }catch (Exception e){

            e.printStackTrace();
        }
    }
}

class SendClient extends  Thread{//发送线程暂时放到了客户端里
    private Socket socket;

    public SendClient(Socket socket){

        this.socket=socket;
    }

    public void run(){


        OutputStream outputStream= null;
        try {
            outputStream = socket.getOutputStream();
            DataOutputStream dataOutputStream= new DataOutputStream(outputStream);//借用高级输出流 实现输出功能

            while (true){

                Scanner scanner= new Scanner(System.in);
                System.out.print("发送内容为:");

                String string = scanner.next();
                dataOutputStream.writeUTF(string);//发送内容


            }

        } catch (IOException e) {
            e.printStackTrace();
        }



    }


}
发布了22 篇原创文章 · 获赞 0 · 访问量 375

猜你喜欢

转载自blog.csdn.net/weixin_44657829/article/details/105341754