import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class AutoReplyTcpClient {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket client=new Socket("127.0.0.1",6667);
System.out.println("连接服务器127.0.0.1成功");
DataOutputStream dos = new DataOutputStream(client.getOutputStream());
DataInputStream dis = new DataInputStream(client.getInputStream());
Scanner sc=new Scanner(System.in);
String str="";
while(!"quit".equals(str=sc.nextLine())){
dos.writeUTF(str);//将控制台内容写入服务器中
String response=dis.readUTF();//读取服务器内容
System.out.println("服务器:"+response);
}
}
}
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolAutoReplyTcpServer {
static void charWithClient(Socket client) throws IOException{
DataOutputStream dos = new DataOutputStream(client.getOutputStream());
DataInputStream dis = new DataInputStream(client.getInputStream());
while (true) {
//加try是为了防止,客户端断开连接出现异常
try {
// 用这个流去封装输入流
String str = dis.readUTF();// 直接读取字符串
System.out.println("收到来自客户端[" + client.getPort() + "]的消息:" + str);
// 再把数据写回去
dos.writeUTF("收到了(" + str + ")");
} catch (Exception e) {
System.out.println("与客户端["+client.getPort()+"]断开连接");
break;
}
}
}
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(6667);
System.out.println("服务器端在6666端口启动成功,等待客户端连接...");
//创建线程池
ExecutorService pool=Executors.newFixedThreadPool(3);//同时运行3个客户端
while (true) {
// 启动监听
Socket client = ss.accept();
System.out.println("客户端[" + client.getPort() + "]连接成功");
pool.submit(new Runnable() {
@Override
public void run() {
try {
charWithClient(client);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}
}