黑马程序员技术交流社区
标题:
TCP协议完成一个客户端一个服务器通信
[打印本页]
作者:
xingzjx
时间:
2015-3-12 15:30
标题:
TCP协议完成一个客户端一个服务器通信
分享一个基础测试题
题目:使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。 服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。
客户端代码:
public class Test10 {// 客户端程序
/**
* 注:该程序目前只能输入数字才能完成反转
*/
public static void main(String[] args) {
// 第一步:创建一个Socket对象
Socket s=null;
try {
s = new Socket(InetAddress.getLocalHost(), 44322);
while (true) {
// 第二步: 从控制台中获取一个字符串
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str=sc.nextLine();
// 第三步:向服务端发送数据
System.out.println("向服务端发送数据中");
PrintStream printStream=new PrintStream(s.getOutputStream());
printStream.println(str);
// 第四步:向服务器接受数据
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(s.getInputStream()));
System.out.println("接受服务器的字符串");
System.out.println(bufferedReader.readLine());
sc.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if(s!=null){
try {
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
复制代码
服务端代码
public class TCPServer {// 服务端
public static void main(String[] args) {
// 第一步监听客户端
Socket s = null;
try {
while (true) {
ServerSocket serverSocket = new ServerSocket(44322);
s = serverSocket.accept();
BufferedReader reader = new BufferedReader(
new InputStreamReader(s.getInputStream()));
String str = reader.readLine();
// 第二步:接收客户端的数据
System.out.println("服务端接收数据");
Thread.sleep(5000);
PrintStream printStream = new PrintStream(s.getOutputStream());
// 第三步:将字符串反转
System.out.println("服务端将字符串反转后发送给客户端");
printStream.println(new StringBuffer(str).reverse());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if(s!=null){
try{
s.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2