Socket编程基本使用

最近去笔试联系,看到很多名词:网络编程,TCP/IP协议
跟我所学的socket编程有什么联系呢?(果然基础不到家啊!)
网络编程,java提供了一套API,利用这些API可以进行网络间通信,主要就是信息的接收和发送。这就是网络编程了!
TCP/IP协议:套接字,java利用TCP/IP协议给信息的接收和发送制定了标准。这些都是底层实现,可是还是会考?!
socket编程:就是编程人员的表层网络编程了,利用socket,而不需要关心底层的tcp/ip,就可以网络通信了!
首先看服务器端:

    public static void main(String[] args) {
        ServerSocket serverSocket=null;
        Socket socket=null;
        try {
            //建立一个服务器Socket(ServerSocket)绑定指定端口并开始监听
            serverSocket = new ServerSocket(10200);
            //使用accept()方法阻塞等待监听,活动新的 链接
            socket=serverSocket.accept();
            System.out.println("监听到客户端请求!");
            //得到socket的读写流
            OutputStream os=socket.getOutputStream();
            PrintWriter pw= new PrintWriter(
                    new BufferedWriter(new OutputStreamWriter(socket
                            .getOutputStream())), true);
            //输入流
            InputStream is=socket.getInputStream();
            BufferedReader br=new BufferedReader(new InputStreamReader(is));

            String servletRes="";

            //读取请求信息
            for(;;){
                servletRes=br.readLine();
                if(br.equals("over")){
                    break;
                }
                System.out.println("这是服务器,接收的客户端请求是:"+servletRes);
                //给客户端做出响应,发送信息需要在循环内做出响应,防止阻塞在循环内无法响应
                pw.println("我是服务器!");
                pw.println("我是服务器!");
                pw.println("over");
            }

            pw.close();
            os.close();
            br.close();
            is.close();

            //socket.close();
            //serverSocket.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                socket.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

    }

其次客户端:

public static void main(String[] args) {
        Socket socket=null;
        try {
            socket=new Socket("localhost",10200);
            //得到socket的读写流
            OutputStream os=socket.getOutputStream();
            PrintWriter pw= new PrintWriter(
                    new BufferedWriter(new OutputStreamWriter(socket
                            .getOutputStream())), true);
            //输入流
            InputStream is=socket.getInputStream();
            BufferedReader br=new BufferedReader(new InputStreamReader(is));
            //向服务器发送信息,发送请求
            pw.println("我是客户端!");
            pw.println("我是客户端!");
            pw.println("over");
            String servletRes="";
            //读取响应信息
            for(;;){
                servletRes=br.readLine();
                if(br.equals("over")){
                    break;
                }
                System.out.println("这是客户端,接收的响应是:"+servletRes);
            }

            pw.close();
            os.close();
            br.close();
            is.close();
            //socket.close();
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                socket.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

首先运行服务器端,在运行客户端,在控制台可以查看信息;
服务器输出:

监听到客户端请求!
这是服务器,接收的客户端请求是:我是客户端!
这是服务器,接收的客户端请求是:我是客户端!
这是服务器,接收的客户端请求是:over

客户端输出:

这是客户端,接收的响应是:我是服务器!
这是客户端,接收的响应是:我是服务器!
这是客户端,接收的响应是:over
这是客户端,接收的响应是:我是服务器!
这是客户端,接收的响应是:我是服务器!
这是客户端,接收的响应是:over
这是客户端,接收的响应是:我是服务器!
这是客户端,接收的响应是:我是服务器!
这是客户端,接收的响应是:over

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值