把困難踩在腳下

          迎難而上

           

          初寫TCP通信程序

          Tcp通信協(xié)議是基于OSI標(biāo)準(zhǔn)協(xié)議,有應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、物理層+數(shù)據(jù)鏈路層。TCP采用三次握手,所謂“三次握手”就是A向B發(fā)出連接請求,B向A發(fā)出收到消息,然后A向B發(fā)出收到消息。這樣可以提高通信連接的可靠性。TCP通信可以用Socket套接字實(shí)現(xiàn),Socket正如它的英文名稱“插座”一樣,兩臺電腦要想實(shí)現(xiàn)通信,每臺電腦就是一個(gè)插座,用一根虛擬的導(dǎo)線將兩個(gè)插座連接一起,就可以實(shí)現(xiàn)通信。

          下面看程序:

          先看服務(wù)器端:

           

          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
              
          {
                  
          //創(chuàng)建一個(gè)ServerSocket對象實(shí)例
                  ServerSocket  ss=new ServerSocket(1526);
                  
          //創(chuàng)建一個(gè)Socket實(shí)例對象,用來接受客戶端傳過來的Socket
                  Socket client=null;
                  System.out.println(
          "等待客戶端的連接、、、、、");
                  
          //程序運(yùn)行到此就會(huì)阻塞,除非有客戶端連接
                  client=ss.accept();
                  System.out.println(
          "有客戶連接上了---");
                  
          //創(chuàng)建和客戶端的通信通道
                  BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
                  PrintStream out
          =new PrintStream(client.getOutputStream());
                  
          //向客戶端輸出信息
                  out.println("Hello how are you?");
                  
          //關(guān)閉輸入輸出流
                  in.close();
                  out.close();
              }
           

          }
           

          在此程序中首先創(chuàng)建了一個(gè)ServerSocket對象,并指明了它的端口,客戶端通過IP和這個(gè)端口和服務(wù)器端進(jìn)行連接。程序運(yùn)行到此:

          client=ss.accept();就不在往下運(yùn)行直到有客戶端連接上,在繼續(xù)往下執(zhí)行。通過   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
              
          {
                  
          //創(chuàng)建Socket實(shí)例對象
                  Socket client=new Socket("LocalHost",1526);
                  
          //創(chuàng)建String對象用來盛放從服務(wù)器端傳過來的信息,起一個(gè)緩沖作用
                  String str=null;
                  
          //和服務(wù)器端建立通信連接
                  BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
                  
          //讀取服務(wù)器端發(fā)過來的信息放在String對象中
                  str=in.readLine();
                  
          //把信息輸出到控制臺上
                  System.out.println(str);
              }
           

          }
           

          客戶端程序:通過

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

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

          運(yùn)行時(shí)首先啟動(dòng)服務(wù)器端程序,然后再啟動(dòng)客戶端程序。

          運(yùn)行結(jié)果:

          服務(wù)器端控制臺顯示:

          啟動(dòng)服務(wù)器端顯示:

          1

          客戶端連接后顯示:

          3

          客戶端控制臺顯示:

          2

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

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


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


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          快樂每一天!

          Everything is an object!

          常用鏈接

          留言簿(2)

          隨筆檔案

          學(xué)習(xí)網(wǎng)站

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 屯门区| 方城县| 桓仁| 商洛市| 广灵县| 西乌珠穆沁旗| 吉林省| 大荔县| 抚顺县| 崇信县| 涟源市| 子长县| 阳城县| 崇阳县| 犍为县| 延庆县| 友谊县| 安远县| 三台县| 平乡县| 长沙市| 双柏县| 巴林左旗| 越西县| 吐鲁番市| 永善县| 若羌县| 青河县| 唐海县| 汽车| 芒康县| 开封县| 海门市| 皋兰县| 安乡县| 湟源县| 垫江县| 巩留县| 明溪县| 连平县| 浑源县|