今天看瞭下java網絡通訊的API,瞭解瞭下java如何進行網絡通訊的。
測試實例如下,首先構建瞭個監聽的server:
import java.net.ServerSocket;
import java.net.Socket;
/**
* @data 2011-9-7
*/
public class ListenServer {
/**
* @param args
*/
public static void main(String[] args) {
try{
ServerSocket serverSocket = new ServerSocket(55888);
System.out.println("Now ListenServer's listening at port 55888 …");
while(true){
Socket sc = serverSocket.accept();
System.out.println(sc.getInetAddress().getHostName() + " linked!");
new Thread(new ProcessService(sc)).start();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
然後是多線程處理的服務類:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
/**
* @data 2011-9-7
*/
public class ProcessService implements Runnable {
private Socket socket = null;
public ProcessService(Socket socket){
this.socket = socket;
}
@Override
public void run() {
BufferedReader br = null;
PrintWriter out = null;
try{
br = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
out = new PrintWriter(this.socket.getOutputStream(),true);
do{
String msg = br.readLine();
out.println(msg);
if(msg.equals("exit")){
break;
}
}while(true);
}catch(Exception e){
e.printStackTrace();
}finally{
try {
br.close();
out.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
最後是客戶端類:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
/**
* @data 2011-9-7
*/
public class Client {
public static void main(String[] args) {
Socket socket = null;
BufferedReader br = null;
PrintWriter pw = null;
BufferedReader in = null;
try{
socket = new Socket(InetAddress.getLocalHost(),55888);
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
pw = new PrintWriter(socket.getOutputStream(),true);
in = new BufferedReader(new InputStreamReader(System.in));
while(true){
System.out.println("input:");
String input = in.readLine();
pw.println(input);
String get = br.readLine();
System.out.println("get:" + get);
if(get.equals("exit")){
break;
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
br.close();
pw.close();
in.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
寫的比較簡單,僅僅實現瞭服務器端與客戶端的通訊。
作者“星空望遠”