【Java】TCP套接字编程

服务器

server.java

package socket;

import java.io.*;
import java.net.*;
public class server {

	    public static void main(String args[]) {
	        try{
	            ServerSocket server=null;
	            
	            try{
	                //创建一个ServerSocket在端口4700监听客户请求
	                server=new ServerSocket(7217);
	                System.out.println("服务器已打开!");
	            }catch(Exception e){
	                e.printStackTrace();
	            }
	            
	            Socket socket=null;
	            
	            try{
	                //使用accept()阻塞等待客户请求,有客户
	                socket=server.accept();//请求到来则产生一个Socket对象,并继续执行
	            }catch(Exception e){
	                e.printStackTrace();//出错,打印出错信息
	            }
	            
	            //由Socket对象得到输入流,并构造相应的BufferedReader对象
	            BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
	            //从socket获取输入流并转换到输入流缓存,从这里可以读到从客户端发来的信息
	            
	            
	            
	            //由Socket对象得到输出流,并构造PrintWriter对象
	            PrintWriter os=new PrintWriter(socket.getOutputStream());
	            //同理的,输出流也是一个缓存,所以下面发送的话,
	            //可能会有延迟的,要立即发送就调用flush方法,
	            //它会立即清空缓存并把信息发出去
	            
	          //向客户端输出该字符串
                os.println("来自服务器的消息!");
                //刷新输出流,使Client马上收到该字符串
                os.flush();
	            
	            //在标准输出上打印从客户端读入的字符串
	            System.out.println("收到客户端的信息:"+is.readLine());
	          
	            os.close(); //关闭Socket输出流
	            is.close(); //关闭Socket输入流
	            socket.close(); //关闭Socket
	            server.close(); //关闭ServerSocket
	        }catch(Exception e){
	            e.printStackTrace();//出错,打印出错信息
	        }
	    }
	
}

客户端

client.java

package socket;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class client {

	public static void main(String[] args) {
        try{
        	
        	System.out.println("客户端已打开!");
        	
            Socket socket=new Socket("127.0.0.1",7217);//创建socket并连接本机的7217端口
            
            PrintWriter os=new PrintWriter(socket.getOutputStream());//输出流,本机到服务器

            BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));//输入流,服务器到本机
            
            System.out.println("收到来自服务器的消息:"+is.readLine());
            
            os.println("这是来自客户端的消息!");//发送消息
            os.flush();//推送
            
            os.close(); //关闭Socket输出流
            is.close(); //关闭Socket输入流
            socket.close(); //关闭Socket
            
        }catch(Exception e){
        	
            e.printStackTrace();//出错,打印出错信息
            
        }

    }

}

运行效果

服务器输出:

服务器已打开!
收到客户端的信息:这是来自客户端的消息!

客户端输出:

客户端已打开!
收到来自服务器的消息:来自服务器的消息!

视频讲解

视频讲解

posted @ 2020-05-28 09:04  清风来叙  阅读(458)  评论(0编辑  收藏  举报