你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 跟高手学编程
Java网络编程入门(十七)
 

public void service() {

    while (true) {

      Socket socket=null;

      try {

        socket = serverSocket.accept();  //等待客户连接

        System.out.println("New connection accepted "

                        +socket.getInetAddress() + ":" +socket.getPort());

        BufferedReader br =getReader(socket);

        PrintWriter pw = getWriter(socket);

 

        String msg = null;

        while ((msg = br.readLine()) != null) {

          System.out.println(msg);

          pw.println(echo(msg));

          if (msg.equals("bye")) //如果客户发送的消息为“bye”,就结束通信

            break;

        }

      }catch (IOException e) {

         e.printStackTrace();

      }finally {

         try{

if(socket!=null)socket.close();  //断开连接

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

      }

    }

  }

 

  public static void main(String args[])throws IOException {

    new EchoServer().service();

  }

}

EchoServer类最主要的方法为service()方法,它不断等待客户的连接请求,当serverSocket.accept()方法返回一个Socket对象,就意味着与一个客户建立了连接。接下来从Socket对象中得到输出流和输入流,并且分别用PrintWriterBufferedReader来装饰它们。然后不断调用BufferedReaderreadLine()方法读取客户发来的字符串XXX,再调用PrintWriterprintln()方法向客户返回字符串echo:XXX。当客户发来的字符串为“bye”,就会结束与客户的通信,调用socket.close()方法断开连接。

2.创建EchoClient

EchoClient程序中,为了与EchoServer通信,需要先创建一个Socket对象:

String host="localhost";  

String port=8000;

Socket socket=new Socket(host,port); 

在以上Socket的构造方法中,参数host表示EchoServer进程所在的主机的名字,参数port表示EchoServer进程监听的端口。当参数host的取值为“localhost”,表示EchoClientEchoServer进程运行在同一个主机上。如果Socket对象成功创建,就表示建立了EchoClientEchoServer之间的连接。接下来,EchoClientSocket对象中得到了输出流和输入流,就能与EchoServer交换数据。

EchoClient的核心代码如下:

import java.net.*;

import java.io.*;

import java.util.*;

public class EchoClient {

  private String host="localhost";

  private int port=8000;

  private Socket socket;

 

  public EchoClient()throws IOException{

     socket=new Socket(host,port); 

  }

  public static void main(String args[])throws IOException{

    new EchoClient().talk();

  }

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089