Socket程式設計

2022-08-31 20:09:16 字數 2226 閱讀 5704

socket變成的基本步驟(tcp/udp)

常見socket連線時,可以指定使用的傳輸層協議,socket可以支援不同的傳輸層協議(tcp或udp),當使用tcp協議進行連線時,該socket連線就是乙個tcp連線。server端所要做的事情主要是建立乙個通訊的端點,然後等待客戶端傳送的請求。典型的處理步驟如下:(伺服器端建立連線過程)

1、構建乙個serversocket例項,指定本地的埠。這個socket就是用來監聽指定埠的連線請求的。

2、重複如下幾個步驟:

a. 呼叫socket的accept()方法來獲得下面客戶端的連線請求。通過accept()方法返回的socket例項,建立了乙個和客戶端的新連線。

b. 通過這個返回的socket例項獲取inputstream和outputstream,可以通過這兩個stream來分別讀和寫資料。

c. 結束的時候呼叫socket例項的close()方法關閉socket連線。

客戶端的請求過程稍微有點不一樣:

1、構建socket例項,通過指定的遠端伺服器位址和埠來建立連線。

2、通過socket例項包含的inputstream和outputstream來進行資料的讀寫。

3、操作結束後呼叫socket例項的close方法,關閉。

1

//簡單的 client/server程式設計

2//

服務端3

public

class

servercatch

(exception e)

14 system.out.ptintln("server------------------------");

15 socket socket = null;16

trycatch

(exception e)

23string line;

24 bufferedreader is =new bufferedreader(new

inputstreamreader(socket.getinputstream()));

25//

由socket物件得到的輸入流,並構造相應的bufferedreader物件

26 printwriter os = new

printwriter(socket.getoutputstream());

27//

由socket物件得到輸出流,並構造printwriter物件

28 bufferedreader sin = new bufferedreader(new

inputstreamreader(system.in));

29//

由系統標準輸入裝置構造bufferedreader物件

30 system.out.println("client:"+is.readline());

31//

在標準輸出上列印從客戶端讀入的字串

32 line =sin.readline();

33//

從標準輸入讀入一字串

34while(!line.equals("bye"))//

繼續迴圈

44 os.close();//

關閉socket輸出流

45is.close();

46socket.close();

47server.close();

48 }catch

(exception e)51}

52}

5354//

客戶端55

public

class

client//

繼續迴圈

80 os.close();//

關閉socket輸出流

81 is.close();//

關閉socket輸入流

82 socket.close();//

關閉socket

83 }catch

(exception e)86}

87 }

socket程式設計

一直以為serversocket accept之後客戶端才能發資訊,實驗後得出如下結論 1 serversocket沒有accept時,client是可以傳送資訊到server端的。2 serversocket accept之後,正在處理訊息時,client也是可以傳送資訊到server端。如果se...

Socket程式設計

對tcp ip udp socket程式設計這些詞你不會很陌生吧?隨著網路技術的發展,這些詞充斥著我們的耳朵。那麼我想問 1.什麼是tcp ip udp?2.socket在 呢?3.socket是什麼呢?4.你會使用它們嗎?什麼是tcp ip udp?tcp ip transmission cont...

socket程式設計

建立socket 建立乙個 socket,它可用於在基於 tcp ip 的網路 如 internet 上通訊。socket s new socket addressfamily.internetwork,sockettype.stream,protocoltype.tcp 若要使用 udp 而不是 ...