这是两个小程序,自己的电脑通过两个程序,分别成为客户端和服务器端,实现客户端写字母(在这里特意定义为字母),服务器端收到数据,变回大写字母再输送到客户端,并在客户点显示的功能,以此为出发点,分析read与readLine方法,
public class TCPDemo02 {//客户端
public static void main(String[] args) {try {
Socket socket=new Socket("172.60.20.120",10005);
//定义读取键盘数据的流对象
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
//定义目的。将数据写入到socket输出流,发给服务端
BufferedWriter bufout=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
//定义一个socket读取流,读取服务端返回的大写信息
BufferedReader bufIn=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line=null;
while ((line=bufr.readLine())!=null) {
if ("over".equals(line)) {
break;
}
bufout.write(line);
bufout.flush();//记得刷新
String str=bufIn.readLine();
System.out.println("server"+str);
}
bufr.close();
socket.close();//加个-1
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public class TCPServerDemo02 {//服务器端
public static void main(String[] args) {
try {
ServerSocket server=new ServerSocket(10005);
Socket socket=server.accept();
String ip=socket.getInetAddress().getHostAddress();
System.out.println(ip+"-----connected");
//读取socket读取流中的数据。
BufferedReader bufIn=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//目的。socket输出流。将大写数据写入到socket输出流,并发送给客户端。
BufferedWriter bufOut=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String line=null;
while ((line=bufIn.readLine())!=null) {
System.out.println(line);
bufOut.write(line.toUpperCase());
bufOut.flush();
}
socket.close();//客户端关掉
server.close();//服务端关掉
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
童鞋们可以运行这两个程序,先启用服务器端,再启用客户端,看看程序会出什么结果?自己能不能解决?
小妞专属