黑马程序员技术交流社区

标题: Tcp 编程思路整理 [打印本页]

作者: bowen-xiao    时间: 2015-1-12 10:46
标题: Tcp 编程思路整理

代码和思路都比较简单,有什么好的想法可以多指教。

Tcp 编程之客户端
需求:
客户端从键盘输入读取一个字符串,发送到服务器。
客户端接收服务器返回数据并打印。
思路整理:
第一步:创建一个Socket对象确定服务器地址以及端口号

第二步:创建一个输入流准备接收键盘输入,从键盘获取输入流到缓冲区;
第三步:创建一个输出流,用于发送数据到服务器端
第四步:创建一个输入流,用于服务器返回数据接收。
第五步:业务处理,完成所有操作后要关闭流。
完整客户端代码如下
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
/*
* Tcp 端客户端(需要先运行服器端)
* 客户端从键盘输入读取一个字符串,发送到服务器。
* 客户端接收服务器返回数据并打印。
*/

public class Test10_Tcp_Client {

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

      Socket s = new Socket( "192.168.1.103" , 8888); // 创建 Socket 对象;

      BufferedReader buf = new BufferedReader(

            new InputStreamReader(System. in )); // 从键盘获取输入流到缓冲区;

      BufferedWriter bufout= new BufferedWriter( new OutputStreamWriter(s.getOutputStream())

            ); // 创建一个输出流

      BufferedReader bufIn = new BufferedReader( new InputStreamReader(

            s.getInputStream())); // 获取输入流 …… ;  

      String line = null ;

      while ((line = buf.readLine()) != null ) {

         if ( "over" .equals(line))

            break ;//当键盘输入over时关闭客户端退出程序

            bufout.write(line);

            bufout.newLine();//写入一个行分隔符。

            bufout.flush();

            String str=bufIn.readLine();

           System. out .println( "服务器返回字符" +str);

      }

      s.close();

   }












欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2