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();
}
}
});
}
}
}