编写了一个服务器端的程序实现在客户端输入字符然后在控制台上显示,直到输入"END"为止,让你写出客户端的程序;

服务端:

package test;


import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;


public class server {
public static void main(String args[]) throws Exception {
System.out.println("我是服务器端");
// 建立一个Socket,端口为8000
ServerSocket ss = new ServerSocket(8080);
Socket s = ss.accept(); // 等待客户端连接(阻塞)
InputStream is = s.getInputStream(); // 得到输入流
InputStreamReader isr = new InputStreamReader(is); // 输入字节流
BufferedReader br = new BufferedReader(isr); // 输入字符流


OutputStream os = s.getOutputStream(); // 得到输出流
PrintStream ps = new PrintStream(os, true); // 输出字符流
String strline = null;
while (true) {
strline = br.readLine();
System.out.println("From client:" + strline);
ps.println(strline); // 向客户端发送信息
if (strline.equals("END")) {
ss.close();
break;
}
}


}
}


客户端:

package test;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;


public class Client {
private Socket sk;
private boolean loop;


public Client() {
try {
sk = new Socket("localhost", 8080);
} catch (Exception e) {
e.printStackTrace();
}
}


public void send() {
try {
OutputStream os = sk.getOutputStream(); // 得到输出流
PrintStream ps = new PrintStream(os, true); // 输出字符流
ps.println("===");
new Thread(new Receiver(this)).start();


BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
while (true) {
String msg = br.readLine();
ps.println(msg);
}
} catch (IOException e) {
e.printStackTrace();
}
}


public static void main(String args[]) throws Exception {
System.out.println("我是客户端");
Client client = new Client();
client.send();
}


public Socket getSk() {
return sk;
}


public void setLoop(boolean loop) {
this.loop = loop;
}


}


class Receiver implements Runnable {
private Client client;


public Receiver(Client client) {
this.client = client;
}


public void run() {


try {
InputStream is = client.getSk().getInputStream();// 得到输入流
InputStreamReader isr = new InputStreamReader(is); // 输入字节流
BufferedReader br = new BufferedReader(isr); // 输入字符流
while (true) {
String msg = br.readLine();
if (msg.equals("END")) {
System.out.println("退出...");
client.setLoop(false);
} else {
System.out.println("From server: " + msg); // 读行
}
}


} catch (IOException e) {
// e.printStackTrace();
}


}
}


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个简单的网络编程实例,需要使用Java的Socket编程。下面是一个简单的实现方式: 客户端代码: ```java import java.io.*; import java.net.*; public class Client { public static void main(String[] args) { // 要发送的字符串 String input = "Hello World!"; try { // 创建Socket对象,指定连接的服务器和端口号 Socket socket = new Socket("localhost", 8888); // 获取输出流,向服务器发送数据 OutputStream os = socket.getOutputStream(); os.write(input.getBytes()); // 获取输入流,接收服务器返回的数据 InputStream is = socket.getInputStream(); byte[] buffer = new byte[1024]; int len = is.read(buffer); // 输出反转后的字符串 System.out.println(new String(buffer, 0, len)); // 关闭流和Socket连接 is.close(); os.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 服务器端代码: ```java import java.io.*; import java.net.*; public class Server { public static void main(String[] args) { try { // 创建ServerSocket对象,指定监听的端口号 ServerSocket serverSocket = new ServerSocket(8888); System.out.println("Server is running..."); while (true) { // 等待客户端连接 Socket socket = serverSocket.accept(); System.out.println("Client connected: " + socket.getInetAddress().getHostAddress()); // 获取输入流,接收客户端发送的数据 InputStream is = socket.getInputStream(); byte[] buffer = new byte[1024]; int len = is.read(buffer); // 反转字符串 String input = new String(buffer, 0, len); String output = new StringBuilder(input).reverse().toString(); // 获取输出流,向客户端发送反转后的字符串 OutputStream os = socket.getOutputStream(); os.write(output.getBytes()); // 关闭流和Socket连接 os.close(); is.close(); socket.close(); } } catch (IOException e) { e.printStackTrace(); } } } ``` 运行方式: 1. 先运行服务器端程序控制台输出 "Server is running..." 2. 再运行客户端程序控制台输出反转后的字符串 "dlroW olleH!"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值