客户端:
/*
需求:建立一个文本转换服务器
客户端给服务端发送文本,服务端会将文本转换成大写返回个客户端
而且客户端可以不断的进行文本转换,当客户端输入over时,转换结束。
*/
/*
分析:客户端
既然是操作设备上的数据,那么就可以使用io技术,并按照io的操作规则思考。
源:键盘
目的:网路输出流
内容:文本数据,可以用字符流
*/
/*
步骤:
1、建立服务
2、获取键盘录入
3、将数据发给服务端
4、获取服务端返回的大写字符(重复234)
5、关闭资源
都是文本数据,可使用字符流操作,同时加入缓冲来提高效率
*/
import java.io.*;
import java.net.*;
public class TransferClient {
public static void main(String[] args) throws Exception {
// 1、建立服务
Socket s=new Socket("192.168.2.100",10005);
//2、获取键盘录入
//源:键盘
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
//目的:网络输出流
BufferedWriter bufOut=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
//定义一个Socket读取流,读取服务端返回的大写信息
BufferedReader bufrIn=new BufferedReader(new InputStreamReader(s.getInputStream()));
//3、将数据发给服务端
//读取键盘和写入到网络输出流
String line=null;
while((line=bufr.readLine())!=null){
if("over".equals(line))
break;
bufOut.write(line+"\r\n");
//bufOut.newLine();
bufOut.flush();
String str=bufrIn.readLine();
System.out.println("sever:"+str);
}
bufr.close();
s.close();
}
}
服务器端:
/*
需求:建立一个文本转换服务器
客户端给服务端发送文本,服务端会将文本转换成大写返回个客户端
而且客户端可以不断的进行文本转换,当客户端输入over时,转换结束。
*/
/*
服务端
源:Socket读取流
目的:Socket输出流
都是文本,用字符流,加入缓冲技术提高效率
*/
import java.io.*;
import java.net.*;
public class TransferServer {
public static void main(String[] args) throws Exception {
ServerSocket ss=new ServerSocket(10005);
//获取客户端对象
Socket s=ss.accept();
String ip=s.getInetAddress().getHostAddress();
System.out.println("Server::"+ip);
//源:读取流中的数据
BufferedReader bufIn=new BufferedReader(new InputStreamReader(s.getInputStream()));
//目的:Socket输出流;将大写数据写入到Socket输出流,并发送给客户端
BufferedWriter bufOut=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String line=null;
while((line=bufIn.readLine())!=null){
System.out.println(line+"\r\n");
bufOut.write(line.toUpperCase());
//bufOut.newLine();
bufOut.flush();
}
s.close();
ss.close();
}
}