客户端与服务端通信的原理
Socket编程客户端和服务端通信过程
代码实现
客户端代码

package demo2;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class Client {

	public static void main(String[] args) throws Exception, IOException {
		//通过socket对象向服务器发送请求
		Socket socket=new Socket("localhost",2198);
		//创建的socket对象是计算机客户端通讯的端点
		//该通讯的端点用于和服务器通讯
		InputStream is=socket.getInputStream();
		OutputStream os=socket.getOutputStream();
		//通过输出流将数据发送到通讯的另一端
		os.write("你好".getBytes());
		while(true){
			if(is.available()>0){
    			byte[] b=new byte[is.available()];
    			is.read(b);
    			System.out.println("服务端回复说"+new String(b));
		}
		}

	}
}


服务器代码

package demo2;

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

public class Server {
    public static void main(String[] args) throws IOException{
    	//创建服务器容器对象,需要监听计算机中的某一个接口
    	ServerSocket server=new ServerSocket(2198);
    	//执行accept方法等待客户端连接,该方法是线程阻塞的
    	//如果没有客户端发送请求,该方法会阻塞当前线程
    	//如果有客户端发送了请求,该方法会进入执行状态并返回一个Socket对象
    	//该Socket对象只能用于和发送请求这一客户端进行通讯
    	Socket socket=server.accept();
    	System.out.println("有客户端连接请求到服务器");
    	//取出输入流
    	InputStream is=socket.getInputStream();
    	OutputStream os=socket.getOutputStream();
    	//接受数据使用死循环来处理
    	while(true){
    		if(is.available()>0){
    			byte[] b=new byte[is.available()];
    			is.read(b);
    			System.out.println("客户端说"+new String(b));
    			//回复客户端
    			os.write("你也好".getBytes());
    		}
    	}
    	
    	
    }
}

相关文章: