黑马程序员技术交流社区
标题:
黑马测试题---tcp协议客户端和服务器端对话
[打印本页]
作者:
小马范
时间:
2014-12-8 20:40
标题:
黑马测试题---tcp协议客户端和服务器端对话
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/*
* @author Xiaoma
* 第十题:
* 使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器
* 服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印
*/
//服务器端代码
public class Test10 {
public static void main(String[] args) throws Exception {
try {
ServerSocket ss = null;
try {
ss = new ServerSocket(10003);
} catch (Exception e) {
System.out.println("定义服务器端口有误");
}
Socket s = null;
try {
s = ss.accept();
} catch (Exception e) {
System.out.println("没有正确对接客户端");
}
// 获取客户端的ip地址且打印出来
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip + ".....conneted");
String line;
// 获取服务器端的输入流
BufferedReader bufin = new BufferedReader(new InputStreamReader(
s.getInputStream()));
// 获取客户端套接字的输出流
PrintWriter pw = new PrintWriter(s.getOutputStream());
BufferedReader buf = new BufferedReader(new InputStreamReader(
System.in));
System.out.println("Client+: " + bufin.readLine());
line = buf.readLine();
/*
* 对服务器端录入的数据进行判断,如果是bye则结束,否则写到输出流,且打印服务器内容,因为readLine()是阻塞式方法,
* 等客户端写入收后,服务器收 读取到客户端的内容后,再读取服务器内容进行再次循环
*/
while (!line.equals("bye")) {
pw.println(line);
pw.flush();
System.out.println("Server:" + line);
System.out.println("Client:" + bufin.readLine());
line = buf.readLine();
}
buf.close();
s.close();
s.close();
ss.close();
} catch (Exception e) {
System.out.println("服务器端代码出现问题");
}
}
}
// 客户端代码
class tcpSocketDemo {
public static void main(String[] args) throws Exception {
try {
Socket s = null;
try {
s = new Socket("192.168.0.103", 10003);
} catch (Exception e) {
System.out.println("没有正确连接到服务器");
}
BufferedReader buf = new BufferedReader(new InputStreamReader(
System.in));
// 获取客户端套接字的输出流
// BufferedWriter bufout = new BufferedWriter(new
// OutputStreamWriter(s.getOutputStream()));
PrintWriter pw = new PrintWriter(s.getOutputStream());
// 获取客户端套接字的输入流
BufferedReader bufin = new BufferedReader(new InputStreamReader(
s.getInputStream()));
String str;
str = buf.readLine();
/*
* 对客户端录入的数据进行判断,如果是bye则结束,否则写到输出流(即服务端的输入流),且打印录入的内容,因为readLine()是阻塞式方法
* , 等服务器读取到数据后,客户端读取到服务器的内容后继续执行,再读取客户端内容进行再次循环
*/
while (!str.equals("bye")) {
pw.println(str);
pw.flush();
System.out.println("Client:" + str);
System.out.println("Server:" + bufin.readLine());
str = buf.readLine();
}
pw.close();
bufin.close();
s.close();
} catch (Exception e) {
System.out.println("客户端代码出现问题");
}
}
}
复制代码
作者:
禾青青
时间:
2014-12-8 23:43
看一看啊啊啊
作者:
邓明
时间:
2014-12-15 10:57
这是java的代码?
作者:
小马范
时间:
2014-12-15 22:07
邓明 发表于 2014-12-15 10:57
这是java的代码?
哥们,是是干嘛的啊
作者:
斷灬dian
时间:
2014-12-23 19:18
来学学 。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2