Java網路編程 入門學習筆記(一)__演算法

來源:互聯網
上載者:User

代碼例子下載:http://pan.baidu.com/s/1jGuSdyY

先來個簡單的例子:

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class EchoPlayer {public String echo(String msg) {return "echo:" + msg ;}public void talk() throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String msg = null;while ((msg = br.readLine()) != null) {System.out.println(echo(msg));if (msg.equals("bye")) break;}}public static void main(String arg[])  throws IOException{new EchoPlayer().talk();}}



下面代碼是一個伺服器例子:用戶端向伺服器發生訊息,伺服器收到訊息後向用戶端發生一條同樣的訊息。

EchoServer

import java.awt.Stroke;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class EchoServer {private int port = 8000;private ServerSocket serverSocket;public EchoServer ()throws IOException {serverSocket = new ServerSocket(port);System.out.println("server Start");}public String echo(String msg) {return "echo:" + msg;}private PrintWriter getWriter(Socket socket) throws IOException{OutputStream socketOut = socket.getOutputStream();return new PrintWriter(socketOut, true);}private BufferedReader getReader(Socket socket)throws IOException{InputStream socketIn = socket.getInputStream();return new BufferedReader(new InputStreamReader(socketIn));}public void service() {while (true) {Socket socket = null;try {socket = serverSocket.accept();System.out.println("New connection accepted" + socket.getInetAddress() + ":" + socket.getPort());BufferedReader br = getReader(socket);PrintWriter pw = getWriter(socket);String msg = null;while ((msg = br.readLine()) != null) {System.out.println(msg);pw.println(echo(msg));if (msg.equals("bye")) {break;}}} catch (IOException e) {// TODO: handle exceptione.printStackTrace();}finally{try {if (socket != null) {socket.close();}} catch (IOException e2) {// TODO: handle exceptione2.printStackTrace();}}}}public static void main(String args[]) throws IOException {new EchoServer().service();}}

      在EchoServer程式的service()方法中,每當 serverSocket.accept();方法返回一個Socket對象,就表示建立了與一個客戶的連結,這個Socket對象中包含了客戶的地址和連接埠資訊,只需要調用Socket對象的socket.getInetAddress() 和socket.getPort()方法就能分別獲得這些資訊。



相關基礎知識:

1、Java網路程式位於TCP/IP參考模型的   網路互聯層


2、TCP協議和IP 協議位於傳輸層。


3、假定一個進程已經佔用TCP的80連接埠,它還能否佔用UDP的80連接埠。   不可以


4、一個客戶進程執行以下代碼;

Socket socket1 = new Socket(host,port);

Socket socket2 = new Socket(host,port);

下面說法正確:

A、socket1和socket2佔用不同的本地連接埠

B、當Socket構造方法成功返回時,就表明建立了與伺服器的一個TCP連結


5、有一種協議規定,如果用戶端發送一行字串"date",伺服器端就返回當前日期資訊:如果用戶端發送一行字串"exit",伺服器端就結束與用戶端的通訊。這種協議應該和哪一層的協議。

答:應用程式層


6、HTTP協議規定預設情況下,HTTP伺服器佔用的TCP連接埠號碼是什麼。 80


7、在客戶/伺服器通訊模式中,客戶程式與伺服器程式的主要任務是什麼?

A、客戶程式發送請求,並接收伺服器的響應

B、伺服器程式接收並處理客戶請求,然後向客戶發送響應結果


8、從哪裡可以找到描述TCP/IP協議的具體文檔。   RFC的官方網站


9、一個伺服器處理序執行以下代碼:

ServerSocket serverSocket = new ServerSocket(80);

Socket socket = serverSocket.accept();

int port = socket.getPot();

A、伺服器處理序佔用80連接埠

B、當serverSocket.accept()方法成功返回時,就表明伺服器處理序接收到了一個客戶串連請求

C、socket.getPort()方法返回用戶端通訊端佔用的本地連接埠








聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.