本篇文章主要學習net包中socket類及serversocket的使用,亦即通常所說的socket編程(網絡編程的方法很多,socket只是其中一種).初步學習,記下來,不對的地方請指教.程序代碼如下:
服務器端代碼:
package test.net;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class socketServer {
?public static void main(String args[]){
??try{
???ServerSocket server = new ServerSocket(2000);
???Socket client = server.accept();?//服務器偵聽端口并接受到此套接字的連接
???BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));?//接收客戶端傳遞的數據流
???PrintWriter out=new PrintWriter(client.getOutputStream());? //服務器的返回值
???while(true){
????String str = in.readLine();
????System.out.println("Client: "+str);
????
????out.println("... received!");
????out.flush();
????if (str.equals("end")){
?????break;
????}
???}
???client.close();
??}catch(IOException e){
???e.printStackTrace();
??}
??
?}
}
客戶端程序代碼:
package com;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class clientSocket {
?public static void main(String[] args){
??try{
???Socket server = new Socket("10.40.2.7",2000);
???BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream()));??//接收服務器信息
???PrintWriter out = new PrintWriter(server.getOutputStream());?//向服務器發送信息
???
???BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));?//接收鍵盤輸入信息
???while(true){
????String outStr = wt.readLine();
????out.println(outStr);
????out.flush();
????
????if (outStr.equals("end")){
?????break;
????}
????System.out.println(in.readLine());
???}
???
???server.close();
??}catch(UnknownHostException e){
???
??}catch(IOException e){
???
??}
?}
}
~~end.
其中服務器和客戶端數據是通過socket對象進行傳遞的,socket.getInputStream()得到客戶端(相對而言:程序本機就是服務器,別人就是客戶機)傳遞過來的數據輸入流;server.getOutputStream()是即將返回的數據輸出流.? 另,程序的測試需要同時啟動客戶端和服務器端程序.如果在一臺機器上同樣可以做這樣的測試,在eclipse的console中display selected console的選項可以在服務器端程序控制臺和客戶端程序控制臺間進行切換.