java网络编程——Socket和ServerSocket,套接字编程——简单聊天室

一。客户端:Client.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.SocketException;
import java.net.UnknownHostException;






public class Client {


    public static void main(String[] args) throws SocketException {
        String readline = null;
        BufferedReader standard_in = null;  //用于标准输入,从键盘输入数据
        BufferedReader socket_in = null;    //套接字输入流,用来接受服务器发送过来的数字
        PrintWriter socket_out = null;      //套接字输出流,将“标准输入流”中的数据写到socket输出流,用来向服务器发送数据

        try{

            Socket socket = new Socket("127.0.0.1", 4700);//4700是随便起的端口号
            try{
                standard_in = new BufferedReader(new InputStreamReader(System.in));
                socket_in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                socket_out = new PrintWriter(socket.getOutputStream());

                readline = standard_in.readLine();
                while(!readline.equalsIgnoreCase("bye")){
                    socket_out.println(readline);
                    socket_out.flush();
                    System.out.println("Client send data:\t"+readline);
                    System.out.println("Client accept data:\t"+socket_in.readLine());
                    readline = standard_in.readLine();
                }

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

            //close resource

            standard_in.close();
            socket_in.close();
            socket_out.close();                                                                                                                                                                                                                    
            socket.close();

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

}
二。服务器端 Server.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;


public class Server {

    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        Socket socket = null;
        BufferedReader in = null;
        BufferedReader sin = null;
        PrintWriter out = null;
        String line = "";

        try{
            serverSocket = new ServerSocket(4700);
        }catch(IOException e){
            e.printStackTrace();
        }



        try{
            socket = serverSocket.accept();
        }catch(IOException E){
            System.out.println("can't connect the server");
            E.printStackTrace();
        }



        try {
            sin = new BufferedReader(new InputStreamReader(System.in));
            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            out = new PrintWriter(socket.getOutputStream());

            //
            System.out.println("the server accept data:\t"+in.readLine());
            line = sin.readLine();
            while(!line.equalsIgnoreCase("bye")){
                out.println(line);
                out.flush();
                System.out.println("server send data:\t"+line);
                System.out.println("server accept date:\t"+in.readLine());  
                line = sin.readLine();

            }

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }




    }

}
三。测试

  • 客户端
    这里写图片描述
  • 服务器端
    这里写图片描述
  • 具体操作:客户端发送一条数据,服务器端就接受数据。同理,服务器端发送一条数据,客户端就接收数据。但是,这个只能客户端发送一次后必须切换让服务器发送数据,还不能连续发送多条数据。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值