初寫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協議,還有不少東西沒有寫出來,有不對的地方但願你們批評指正,沒時間了我還要上課,先寫到這吧。
相關文章
相關標籤/搜索