黑马程序员技术交流社区
标题:
这题好像很难哦,大神在次光临吧,急急急!
[打印本页]
作者:
汗血黑马
时间:
2014-3-4 18:53
标题:
这题好像很难哦,大神在次光临吧,急急急!
10.使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。
服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。
作者:
薛旻
时间:
2014-3-4 19:35
看了毕老师的视频就可以写出来的,你这样不思考等别人做出题只能让你停步不前
我提示你一句吧StringBuilder有反转函数,加油
作者:
汗血黑马
时间:
2014-3-5 23:42
程序这样编写对不对?
/**
* 需求: 10 使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。
服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。
*
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
class Test10 {// TCP服务端
public static void main(String[] args) throws UnknownHostException // 程序主函数。并声明异常类型。
{
Socket socket = null; // 创建socket端口,默认值为null.
try {
while (true)// 循环语句,使服务端保持常开状态。
{
ServerSocket serverSocket = new ServerSocket(8000);// 创建绑定端口8000的对象ServerSocket
socket = serverSocket.accept();// 接收客户端请求,得到Socket
BufferedReader br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));// 创建带缓冲的字符读入流
String sr = br.readLine();// 读取一个文本行
PrintStream ps = new PrintStream(socket.getOutputStream());// 此输出流不会抛出异常
ps.println(new StringBuffer(sr).reverse());// 将反转后的字符串打印到客户端屏幕上
}
} catch (IOException e) // 接收异常。
{
e.printStackTrace();// 异常处理方式为详细打印问题信息。
} finally// 最后执行语句。
{
if (socket != null)// 如果端口为空,则执行下面语句。
{
try {
socket.close();// socket端口关闭.
} catch (IOException e)// 抛出异常。
{
e.printStackTrace();// 异常处理方式。
}
}
}
}
}
//TCP客户端
class TCPClient {
public static void main(String[] args)// 程序主函数。
{
Socket socket = null;// 创建Socket端口。默认值为null.
try {
socket = new Socket(InetAddress.getLocalHost(), 8000);// 创建Socket,
// 请求服务端
while (true)// 循环语句。
{
BufferedReader br = new BufferedReader(
new InputStreamReader(socket.getInputStream()));// 键盘录入,接受键入字符。
PrintStream ps = new PrintStream(socket.getOutputStream());// 创建一个输出流,用于返回信息。
Scanner scanner = new Scanner(System.in); // 创建Scanner
System.out.println("请输入一个字符串:"); // 给出提示输入
String line = scanner.nextLine(); // 从键盘输入读取一行
ps.println(line); // 发送到服务端
System.out.println(br.readLine()); // 读取服务端发回的字符串, 打印
}
} catch (Exception e)// 接受抛出的异常。
{
e.printStackTrace();// 处理方式,详细打印。
} finally {
if (socket != null)// 判断socket端口是否为空。
{
try {
socket.close();// 端口关闭。
} catch (IOException e)// 如果抛出异常,则接受处理。
{
e.printStackTrace();// 处理方式,详细打印异常。
}
}
}
}
}
作者:
小马过河
时间:
2014-3-6 11:23
写两个类,客户端和服务器端怎么建立对象就不罗嗦了。而网络数据的交互是靠IO流实现的,那么。你该考虑io配合键盘录入,不要忘了写结束录入的判断。其次,发送获取的对象,一定要一致,所以建议写在测试类中,进行对象传递。思路很清楚的,至于反转哪些都是调用本身方法或者转字符倒序遍历的事罢了。加油哦
作者:
小马过河
时间:
2014-3-6 13:29
@zzkang0206
斑竹老是不给分,火大
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2