每次一提到網絡就感覺瞬間變得高大上了,可是網絡編程真的有那么神秘嗎?接下來讓我們一起來復習一下吧。
很多人把網站編程等價于網絡編程,在這里給大家糾正一下,網絡編程!=網站編程,那么何為網絡編程呢?網絡編程時基于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.客戶端代碼:
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流做了詳細的介紹,你可以先去復習一下,在來學習網絡。
聲明:以上內容如有不當,請留言,謝謝。
新聞熱點
疑難解答