客户端服务器互发数据

服务器

package com.test;


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

public class MyServer {
    public MyServer(){
        try {
            //在60000端口上监听
            ServerSocket ss = new ServerSocket(60000);
            System.out.println("服务器启动,在60000端口上监听...");
            //阻塞 等待某个客户端的连接 这个函数会返回Socket连接
            Socket s = ss.accept();
            //System.out.println("与客户端的连接打通");
            //与客户端打通之后 就可以从s中读取客户端发送过来的数据  客户端的s与服务器的s是一样的 是同一个通道
            //InputStreamReader:是读对象  表示从s中读取数据流  
            InputStreamReader isr = new InputStreamReader(s.getInputStream());
            BufferedReader br = new BufferedReader(isr);
            String info = br.readLine();
            System.out.println("客户端说:"+info);
            
            PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
            //往客户端写一行
            pw.println("你好客户端,我是服务器");
            
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public static void main(String[] args){
        MyServer ms = new MyServer();
    }
}

客户端

package com.test;

import java.net.Socket;
import java.io.*;
public class MyCLient {

    public static void main(String[] args) {
        
        MyCLient myClient = new MyCLient();
    }
    public MyCLient(){
        try {
            //Socket()需要传入两个参数 第一个是要发送的服务器的ip,第二个是端口
            Socket s = new Socket("127.0.0.1",60000);
            //如果s连接成功就可以往服务器发送数据
            //PrintWriter:写入对象
            //getOutputStream: 输出流  表示往s中写入数据,true 代表及时刷新数据
            PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
            //println()表示写一行
            pw.println("你好啊 ,我是客户端");
            
            //读取服务器发送过来的数据
            InputStreamReader isr =new InputStreamReader(s.getInputStream());
            BufferedReader br = new BufferedReader(isr);
            String info = br.readLine();
            System.out.println("服务器说:"+info);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

先启动服务器,让服务器在60000端口上监听,再启动客户端,那么这时客户端与服务器之间的socket连接打通,不过这样是一次性的

原文地址:https://www.cnblogs.com/mrluotong/p/5957965.html