Socket編程實例

用套接字實現(xiàn)客戶——服務(wù)器交互計算,客戶端輸入三角形三邊長并發(fā)送給服務(wù)器,服務(wù)器把計算出的三角形面積返回給客戶。

TCPserver.java

package test9;
import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.net.ServerSocket; 
import java.net.Socket; 
 
public class TCPserver { 
    public static final int NUM = 3; 
    public static void main(String args[]){ 
         
        TCPserver TCPserver = new TCPserver(); 
        try { 
            ServerSocket server = null; 
             
            try { 
                server = new ServerSocket(6666); 
            } catch (Exception e) { 
                e.printStackTrace(); 
            } 
             
            Socket socket = null; 
            try { 
                socket = server.accept(); 
            } catch (Exception e) { 
                e.printStackTrace(); 
            } 
             
            String line = ""; 
            double a[] = new double[NUM]; 
            BufferedReader is = new BufferedReader(new InputStreamReader 
                    (socket.getInputStream())); 
             
            System.out.println("從客戶端接收三角形的三條邊:"); 
            for (int i = 0; i < a.length; i++) { 
                line = is.readLine(); 
                a[i] = Double.parseDouble(line); 
            } 
             
             
            System.out.println("三角形的面積是:" + TCPserver.countarea(a)); 
             
            is.close();//關(guān)閉讀取流  
            socket.close();//關(guān)閉Socket  
            server.close();//關(guān)閉ServerSocket  
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    } 
     
     
    //計算三角形面積的方法  
    public double countarea(double a[]){ 
        double area = 0.0; 
         
        double temp = 0.0; 
        double aside = 0.0; 
        double bside = 0.0; 
        double cside = 0.0; 
        aside = a[0]; 
        bside = a[1]; 
        cside = a[2]; 
        temp = a[0] + a[1] + a[2]; 
        temp = temp / 2; 
         
         
         
        area = Math.sqrt(temp * (temp - aside) * (temp - bside) * (temp - cside)); 
         
        return area; 
    } 
} 

TCPclient.java

package test9;

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.io.PrintWriter; 
import java.net.Socket; 
public class TCPclient { 
     
    public static final int NUM = 3; 
    public static void main(String args[]){ 
        try { 
            Socket socket = new Socket("127.0.0.1", 6666); 
            BufferedReader sin = new BufferedReader(new InputStreamReader(System.in)); 
             
            PrintWriter os = new PrintWriter(socket.getOutputStream()); 
             
            System.out.println("從客戶端接收三角形的三條邊發(fā)送到服務(wù)器:"); 
            System.out.println("請輸入3條邊:"); 
            String readline = ""; 
            for (int i = 0; i < NUM; i++) { 
                os.flush(); 
                readline = sin.readLine(); 
                os.println(readline); 
            } 
             
            os.close(); 
            socket.close(); 
             
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    } 
     
}
  1. 兩者放到同一目錄下
  2. 先編譯TCPserver.java
  3. 在編譯運行TCPclient.java
  4. 依次輸入三角形三條邊的長
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、基本socket函數(shù)Linux系統(tǒng)是通過提供套接字(socket)來進(jìn)行網(wǎng)絡(luò)編程的。網(wǎng)絡(luò)的socket數(shù)據(jù)傳輸...
    WB莫遙燚閱讀 1,497評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,948評論 18 139
  • 當(dāng)你老了,回顧一生,就會發(fā)覺:什么時候出國讀書,什么時候決定做第一份職業(yè)、何時選定了對象而戀愛、什么時候結(jié)婚,其實...
    _瘋子閱讀 514評論 1 3
  • 早起,沒有七點半起床 練字,記筆記。沒圖????? 鍛煉,晚上和同學(xué)一起拍了小小小小的小視頻,跑了很多遍,還摔跤了...
    丁水姑娘閱讀 197評論 0 0
  • 前幾天做得一個測試說我可能在寫作上會有一定的成就!???( ˊ?ˋ )??? 我很信 11月初時,很倒霉,查了星座...
    努力的大土豆閱讀 267評論 0 0