package com.itheima;
/**
* 10、使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。
服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。
*/
import java.io.*;
import java.net.*;
public class Test10_Server {
public static void main(String[] args) throws Exception {
//创建服务器socket对象 并且监听10000端口
ServerSocket ss = new ServerSocket(10000);
//获取连接的客户端socket对象
Socket s = ss.accept();
//获取客户端ip地址
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+".....connected");
//定义服务器端socket读取流
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){//读客户端发送过来的字符串
//将读到的字符串反转
line = new StringBuffer(line).reverse().toString();
//将反转后的字符串写给客户端
bufOut.write(line);
bufOut.newLine();
bufOut.flush();
}
s.close();
ss.close();
}
}
package com.itheima;
import java.io.*;
import java.net.*;
public class Test10_Client {
public static void main(String[] args) throws Exception {
//定义客户端socket 连接到本机,即127.0.0.1 端口号10000
Socket s = new Socket("127.0.0.1",10000);
//定义键盘读取流对象
BufferedReader bufr =
new BufferedReader(new InputStreamReader(System.in));
//定义目的流,将数据写入socket输出流,发送给服务端。
BufferedWriter bufOut =
new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
//定义一个socket读取流,读取服务端返回的反转字符串信息
BufferedReader bufIn =
new BufferedReader(new InputStreamReader(s.getInputStream()));
String line = null;
while((line=bufr.readLine()) != null){//读键盘输入的数据,如果输入over则结束循环
if("over".equals(line))
break;
bufOut.write(line);//把键盘输入的数据写入socket输出流中,写给服务器
bufOut.newLine();
bufOut.flush();
String str = bufIn.readLine();//读取服务器发送回来的反转过的字符串
System.out.println("server: "+str);
}
bufr.close();
s.close();
}
}
|