把困難踩在腳下

          迎難而上

           

          初寫TCP通信程序

          Tcp通信協議是基于OSI標準協議,有應用層、傳輸層、網絡層、物理層+數據鏈路層。TCP采用三次握手,所謂“三次握手”就是A向B發出連接請求,B向A發出收到消息,然后A向B發出收到消息。這樣可以提高通信連接的可靠性。TCP通信可以用Socket套接字實現,Socket正如它的英文名稱“插座”一樣,兩臺電腦要想實現通信,每臺電腦就是一個插座,用一根虛擬的導線將兩個插座連接一起,就可以實現通信。

          下面看程序:

          先看服務器端:

           

          package com.dr.me; 

          import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.io.PrintStream;
          import java.net.ServerSocket;
          import java.net.Socket; 

          public class MyServer {
              
          public static void main(String args[]) throws IOException
              
          {
                  
          //創建一個ServerSocket對象實例
                  ServerSocket  ss=new ServerSocket(1526);
                  
          //創建一個Socket實例對象,用來接受客戶端傳過來的Socket
                  Socket client=null;
                  System.out.println(
          "等待客戶端的連接、、、、、");
                  
          //程序運行到此就會阻塞,除非有客戶端連接
                  client=ss.accept();
                  System.out.println(
          "有客戶連接上了---");
                  
          //創建和客戶端的通信通道
                  BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
                  PrintStream out
          =new PrintStream(client.getOutputStream());
                  
          //向客戶端輸出信息
                  out.println("Hello how are you?");
                  
          //關閉輸入輸出流
                  in.close();
                  out.close();
              }
           

          }
           

          在此程序中首先創建了一個ServerSocket對象,并指明了它的端口,客戶端通過IP和這個端口和服務器端進行連接。程序運行到此:

          client=ss.accept();就不在往下運行直到有客戶端連接上,在繼續往下執行。通過   BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
                  PrintStream out=new PrintStream(client.getOutputStream());
          這條語句就和客戶端建立了一根虛擬的通道。

          看客戶端程序:

           

          package com.dr.me; 

          import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.net.Socket;
          import java.net.UnknownHostException; 

          public class MyClient {
              
          public static void main(String args[]) throws UnknownHostException, IOException
              
          {
                  
          //創建Socket實例對象
                  Socket client=new Socket("LocalHost",1526);
                  
          //創建String對象用來盛放從服務器端傳過來的信息,起一個緩沖作用
                  String str=null;
                  
          //和服務器端建立通信連接
                  BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
                  
          //讀取服務器端發過來的信息放在String對象中
                  str=in.readLine();
                  
          //把信息輸出到控制臺上
                  System.out.println(str);
              }
           

          }
           

          客戶端程序:通過

          Socket client=new Socket("LocalHost",1526);

          新建一個Socket對象,并指明了要向哪臺電腦建立連接及該電腦的端口,“LocalHost”是本臺電腦的IP,也可以寫成“127.0.0.1”,如果和其他電腦連接則改為那臺電腦的IP。端口號一定要和服務器端的客戶端一致,否則出現異常。

          運行時首先啟動服務器端程序,然后再啟動客戶端程序。

          運行結果:

          服務器端控制臺顯示:

          啟動服務器端顯示:

          1

          客戶端連接后顯示:

          3

          客戶端控制臺顯示:

          2

          這個程序只是簡單說明了一下TCP協議,還有很多東西沒有寫出來,有不對的地方希望大家批評指正,沒時間了我還要上課,先寫到這吧。

          posted on 2010-11-12 09:30 馮魁 閱讀(267) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          公告

          快樂每一天!

          Everything is an object!

          常用鏈接

          留言簿(2)

          隨筆檔案

          學習網站

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 神农架林区| 辰溪县| 英超| 错那县| 蕉岭县| 浪卡子县| 锡林郭勒盟| 衡阳市| 五华县| 福安市| 泰兴市| 南投市| 万盛区| 霍邱县| 镇沅| 紫金县| 莫力| 梓潼县| 东平县| 微博| 禹州市| 伊宁县| 寻乌县| 那曲县| 浮山县| 祁门县| 五华县| 宜州市| 永登县| 襄垣县| 香港| 苏尼特左旗| 彭山县| 清新县| 江陵县| 平潭县| 绥化市| 唐山市| 湄潭县| 洪泽县| 道真|