[黑马程序员]tcpdemo3

来源:互联网 发布:python自动化测试工具 编辑:程序博客网 时间:2024/06/05 22:57
/*需求: * 建立一个文本转换服务器 * 客户端给服务器端发送文本,服务器段会将文本转换成大写再返回给客户端。 * 而且客户端可以不断的进行文本转换。当客户端输入over时,转换结束 *  * 分析: * 客户端: * 既然是操作设备上的数据,那么就可以用io技术,并按照io的操作规律来思考。 * 源:键盘录入 * 目的:网络设备,网络输出流 * 而且操作的是文本数据,可以选择字符流。 *  * 都是文本数据,可以使用字符流操作数据,同时加入缓冲。 */package test.itheima;import java.io.*;import java.net.ServerSocket;import java.net.Socket;import java.net.UnknownHostException;public class TcpDemo3 {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub}}class TcpClient3 {public static void main(String[] args) throws UnknownHostException,IOException {// 1.create socket object and set the IP&portSocket s = new Socket("127.0.0.1", 10000);// 2.Create read buffer and read from the keyboard.BufferedReader inKeyboard = new BufferedReader(new InputStreamReader(System.in));// 3.Create output for the serverBufferedWriter toServer = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));// 4.Create input from serverBufferedReader fromServer = new BufferedReader(new InputStreamReader(s.getInputStream()));String line = null;while ((line = inKeyboard.readLine()) != null) {if ("over".equals(line))break;toServer.write(line);toServer.newLine();toServer.flush();String str=fromServer.readLine();System.out.println("server:"+str);}s.close();inKeyboard.close();}}class TcpServer3{public static void main(String[] args) throws UnknownHostException,IOException{//1.create ServerSocketServerSocket ss=new ServerSocket(10000);//2.get socketSocket s=ss.accept();//3.get the ip from clientString ip=s.getInetAddress().getHostAddress();System.out.println("Client:"+ip);//4.get the string from client.BufferedReader bFromClient=new BufferedReader(new InputStreamReader(s.getInputStream()));//5.send back the string to client.BufferedWriter bToClient=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));System.out.println(bToClient);String line=null;while((line=bFromClient.readLine())!=null){bToClient.write(line.toUpperCase());/**************** 一定注意下面的两条语句******************/bToClient.newLine();bToClient.flush();/*该例出现的问题.: * 现象:客户端和服务器端都在莫名的等待. * why? * 因为客户端和服务器端都有阻塞式方法,这些方法没有读到结束标记.就会一直等. */}//6.close resourcess.close();}}

0 0
原创粉丝点击