注意read、readLine方法时阻塞式的,所以注意newLine添加换行
/*
建立一个文本转换器,
客户端给服务端发送文本,服务端会将文本进行转换,返回给客户端
分析:
客户端:
1、既然操作设备上的数据,就可以使用IO技术。
源:键盘录入。
目的:网络输出流
而且操作是文本数据,可以使用字符流。
*/
import java.net.*;
import java.io.*;
import java.lang.*;
import java.lang.Exception;
class TransClient
{
public static void main(String[] args) throws Exception
{
Socket s = new Socket("222.49.250.147",10001);
//定义读取键盘信息
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//定义目的,将数据写入到socket输出流,发给服务端
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String line = null;
while((line = br.readLine()) != null)
{
bw.write(line);
bw.newLine();
bw.flush();
if("over".equals(line))
break;
}
//定义一个socket读取流,读取服务器返回的额值。
BufferedReader brServer = new BufferedReader(new InputStreamReader(s.getInputStream()));
line = null;
while((line = brServer.readLine()) != null)
{
System.out.println(line);
}
brServer.close();
bw.close();
}
}
/*
将读取的字母转换成大写发送到客户端。
*/
class TransServer
{
public static void main(String [] args) throws Exception
{
ServerSocket ss = new ServerSocket(10001);
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip + "is connected");
//定义一个流,用于读取客户端信息
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
//处理输出,返回到客户端
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String line = null;
while((line = br.readLine()) != null)
{
System.out.println(line);
bw.write(line.toUpperCase());
bw.newLine();
bw.flush();
}
bw.close();
br.close();
}
}