本篇文章主要學(xué)習(xí)net包中socket類及serversocket的使用,亦即通常所說的socket編程(網(wǎng)絡(luò)編程的方法很多,socket只是其中一種).初步學(xué)習(xí),記下來,不對的地方請指教.程序代碼如下:
服務(wù)器端代碼:
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();?//服務(wù)器偵聽端口并接受到此套接字的連接
???BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));?//接收客戶端傳遞的數(shù)據(jù)流
???PrintWriter out=new PrintWriter(client.getOutputStream());? //服務(wù)器的返回值
???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()));??//接收服務(wù)器信息
???PrintWriter out = new PrintWriter(server.getOutputStream());?//向服務(wù)器發(fā)送信息
???
???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.
其中服務(wù)器和客戶端數(shù)據(jù)是通過socket對象進(jìn)行傳遞的,socket.getInputStream()得到客戶端(相對而言:程序本機(jī)就是服務(wù)器,別人就是客戶機(jī))傳遞過來的數(shù)據(jù)輸入流;server.getOutputStream()是即將返回的數(shù)據(jù)輸出流.? 另,程序的測試需要同時啟動客戶端和服務(wù)器端程序.如果在一臺機(jī)器上同樣可以做這樣的測試,在eclipse的console中display selected console的選項可以在服務(wù)器端程序控制臺和客戶端程序控制臺間進(jìn)行切換.