知識點:1.Socket編程:ServerSocket類 Socket類2.Java多線程:編程原則(能夠獨立在一個線程中完成的操作就應該開闢一個新的線程)3.telnet命令 [注]win7是有telnet功能的,只是預設沒有開啟,開啟方法:開啟“控制台”,找到程式和功能,然後點擊左上方的“開啟或關閉windows功能”,會彈出windows功能的對話方塊,這個對話方塊裡面有許多windows的小功能,再找到TelentClient,打上勾,確認即可. 原始碼:/**
* @Author:胡家威
* @CreateTime:2011-9-20 下午08:30:28
* @Description:
*/
package com.yinger.chap51;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
public class ReceiveServer {
final int PORT=9090;
public static void main(String[] args) {
new ReceiveServer();
}
public ReceiveServer(){
ServerSocket serverSocket = null;
Socket socket = null;
ServerThread serverThread = null;
try {
serverSocket = new ServerSocket(PORT);
System.out.println("Server is start!\t"+new Date());
System.out.println("port:"+serverSocket.getLocalPort());
System.out.println("timeout:"+serverSocket.getSoTimeout());
while(true){
socket = serverSocket.accept();
serverThread = new ServerThread(socket);
serverThread.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ServerThread extends Thread{
Socket socket;
BufferedReader br;
PrintWriter pw;
public ServerThread(Socket socket) {
this.socket = socket;
try {
// 對socket的輸入輸出資料流進行封裝
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);//true
pw.println("Welcom to server!\t"+new Date());
pw.println("LocalPort:"+socket.getLocalPort());
pw.println("Port:"+socket.getPort());
pw.println("what can I do for you?");
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void run() {
String command;
while(true){
try {
command= br.readLine();
if(command==null || command.trim().equalsIgnoreCase("exit")){
break;
}else if(command.trim().equalsIgnoreCase("help")){
pw.println("HELP\tQUERY\tEXIT");
}else if(command.trim().equalsIgnoreCase("query")){
pw.println("I don't know!");
}else{
pw.println("command is not found!Please see HELP!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
try {
socket.close();//關閉串連!
} catch (IOException e) {
e.printStackTrace();
}
}
}
效果展示:
伺服器啟動:
建立串連:
測試:
通過 Wiz 發布