標籤:
JAVA--網路編程 每次一提到網路就感覺瞬間變得高大上了,可是網路編程真的有那麼神秘嗎?接下來讓我們一起來複習一下吧。 很多人把網站編程等價於網路編程,在這裡給大家糾正一下,網路編程!=網站編程,那麼何為網路編程呢?網路編程時基於TCP和UDP的一種編程,例如:遊戲類、社交類產品。對於TCP通訊,它是一種有問有答的一種編程,而UDP是一種類似於對講機的一種通訊,兩者各有優點,TCP相對UDP更安全,UDP相對TCP傳輸更快速,在遊戲開發中經常使用UDP通訊。 對於他們之間的深層區別,我就不是十分清楚了,如果你知道,請勞煩交流一下。下面我們以實際例子,簡單介紹一下網路編程:一、基於TCP的簡單網路連接: 伺服器端代碼:public class TestSeriver { /**伺服器端 * @param args */ public static void main(String[] args) { try { //我們的機器上一個有65526個連接埠,在我們設定連接埠時,盡量選擇124以後的連接埠,因為124之前的連接埠已經被特定的程式設定,例如:80 :瀏覽器地址連接埠 ServerSocket ss = new ServerSocket(888);//這裡的888:是我們為了方便用戶端的串連設定的連接埠號碼 Socket s = ss.accept();//用來接收用戶端的的串連,注意這個方法是阻塞式的,也就是說如果沒有用戶端串連,程式將會停留在這個位置 System.out.println("A client connect!"); } catch (IOException e) { e.printStackTrace(); } }} 用戶端代碼:public class TestClient { /**用戶端 * @param args */ public static void main(String[] args) { try { Socket s = new Socket("127.0.0.1",888);//在這裡說明一點,"127.0.0.1":使我們的主機號,888:是我們需要串連的連接埠號碼 } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }} 在這裡說明一點,這種伺服器--用戶端串連,一次只能串連一個用戶端,並且沒有任何資料通訊,那如何?多用戶端串連,並完成通訊呢?接下來就給大家介紹一種方式: 伺服器端代碼:public class TestSeriver1 { /**伺服器端 * @param args */ public static void main(String[] args) { try { ServerSocket ss = new ServerSocket(999); while(true){ Socket s = ss.accept(); System.out.println("A client connect!"); InputStream is = s.getInputStream(); DataInputStream dis = new DataInputStream(is); System.out.println(dis.readUTF());//這裡的readUTF()方法也是阻塞式的,為了讓看到這個效果我在用戶端輸入的地方添加了一個停頓,已經標註 } } catch (IOException e) { e.printStackTrace(); } }} 用戶端代碼:public class TestClient1 { /**用戶端 * @param args */ public static void main(String[] args) { try { Socket s = new Socket("127.0.0.1", 999); OutputStream os = s.getOutputStream(); DataOutputStream dos = new DataOutputStream(os); Thread.sleep(3000);//設定停頓三秒鐘,關於這個我線上程的部落格裡有說明 dos.writeUTF("Hello Server!"); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }} 這其中添加了一下關於JAVA--io流方面的知識,如果你感覺看不懂,我在昨天的部落格中對JAVA--io流做了詳細的介紹,你可以先去複習一下,在來學習網路。 聲明:以上內容如有不當,請留言,謝謝。
轉載自:http://www.cnblogs.com/AndroidJotting/p/3939144.html
JAVA--網路編程