A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始



客户端
import java.net.*;
import java.io.*;


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

                /*客户端


                 * 需求:建立一个文本转换服务器
                 * 客户端给服务端发送文本,服务单会将文本转成大写在返回给客户端。
                 * 而且客户端可以不断的进行文本转换。当客户端输入over时,转换结束
                 *
                 * 分析:
                 * 客户端:
                 * 既然是操作设备上的数据,那么可以使用io技术,并按照io的操作规律来思考
                 * 源:键盘录入
                 * 目的:网络设备,网络输出流
                 *
                 * 步骤:
                 * 1.建立服务
                 * 2.获取键盘录入
                 * 3.将数据发给服务端
                 * 4.服务端返回大写数据
                 * */
                 //建立服务端
                Socket s=new Socket("192.168.0.2",10003);
                //键盘写入
                BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
        //定义目的,将数据写到socket输出流,发给服务端
                //BufferedWriter bwOut=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
            //可以简写为:
                 PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
        //定义一个sockert读取流,读取服务端返回大写信息
                BufferedReader brIn=new BufferedReader(new InputStreamReader(s.getInputStream()));
                String line=null;
                while((line=bufr.readLine())!=null){
        if("over".equals (line))
                         break;
         pw.println(line);
                 //bwOut.write(line);
                 //bwOut.newLine();
                 //bwOut.flush();
                  String str=brIn.readLine();
                         System.out.println("server:"+str);
               
                }
        s.close();

        }
}




服务端

import java.net.*;
import java.io.*;


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

                /*
                 * 服务端
                 * 源:socket读取流
                 * 目的:socket输出流
                 *
                 * 该例子出现的问题
                 * 现象:客户端和服务端都在莫名的等待
                 * 为什么?
                 * 因为客户端和服务端都有阻塞式方法,这些方法没有读到结束标记,那么久一直等而导致两端,都在等待
                 * */
                 ServerSocket ss=new ServerSocket(10003);
                 Socket s=ss.accept();
                 String ip=s.getInetAddress().getHostAddress();
                 System.out.println(ip);

                  //读取流中的数据
                 BufferedReader brIn=new BufferedReader(new InputStreamReader(s.getInputStream()));
                 //目的 Socket输出流。将大写数据写入到socket输出流中,并发送给客户端
                //BufferedWriter bwOut=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
                //可以简写为:
                PrintWriter out=new PrintWriter(s.getOutputStream(),true);

                 String line=null;
                 while((line=brIn.readLine())!=null){


                 System.out.println(line);
                out.println(line.toUpperCase());
                 // bwOut.write(line.toUpperCase());
                 //bwOut.newLine();
                // bwOut.flush();
                 
                 }

s.close();
ss.close();
                         
        }
}







文本转换器.jpg (42.11 KB, 下载次数: 5)

文本转换器.jpg

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马