Java TCP通訊概念及例項

2021-08-02 01:10:47 字數 3651 閱讀 1616

tcp/udp 協議tcp協議和udp協議的區別類似於**系統和郵政系統。

<1>tcp:類似於**系統,建立雙向的通訊通道,確定連線,話音順序接聽

<2>udp:類似於郵政系統,傳送方將信件傳送到正確的位址,但並不知道準確的郵路,大多數郵件到達了目的地,個別情況一些郵件會在路上丟失。郵件不保證順序到達目的地。

socket

客戶端的通訊套接字,可指定遠端ip位址、埠進行連線通訊,也可以通過方法獲取已連線的socket的遠端ip位址、埠,以及將此socket以位元組輸入流和輸出流的形式返回,當與資料輸入流和輸出流繫結,便可實現客戶端的網路通訊。

建構函式均為public修飾型別,如果建立socket時發生i/o錯誤,均丟擲ioexception異常。常用建構函式如下:

socket(inetaddress address,int port):建立乙個socket並與規定的ip位址的指定的埠相連線。

socket(string host,int port):建立乙個socket並與指定主機的指定埠連線。

serversocket        

伺服器的通訊套接字,用來偵聽客戶端請求的連線,並為每個新連線建立乙個socket物件,由此建立繫結此socket的輸入流和輸出流,與客戶端實現網路通訊。

建構函式均為public修飾型別,如果建立socket時發生i/o錯誤,均丟擲ioexception異常。常用建構函式如下:

serversocket(int port):在所給定的用來偵聽的埠上建立乙個伺服器套接字。如果埠號為0,則在任意的空閒的埠上建立要給伺服器套接字。外來連線請求的數量預設最大為50。

服務端cilent

建立serversocket並監聽設定的埠,呼叫accpet()方法,直到找到對應的socket與之連線,建立乙個執行緒為止服務。

public

class

servercilent

} catch

(exception e)

}class w_thread extends

thread

public

void

run()

} catch

(exception e) }}

/**

*/public

static

void

main(string args)

catch

(exception e)

}});

}/**

*/public

servercilent()

/*** initialize the contents of the frame.

*/private

void

initialize()

});btnlistenstart.setbounds(254, 21, 136, 23);

panel.add(btnlistenstart);

label.setbounds(10, 298, 82, 15);

frmserver.getcontentpane().add(label);

lblnewlabel = new

jlabel(string.valueof(socketarr.size()));

lblnewlabel.setbounds(75, 298, 54, 15);

frmserver.getcontentpane().add(lblnewlabel);

btnrefresh = new jbutton("refresh");

btnrefresh.setbounds(331, 298, 93, 23);

frmserver.getcontentpane().add(btnrefresh);}}

多執行緒客戶端cilent

建立socket,並獲取對應的輸入輸出流即可。

public

class cilent implements

runnable

catch

(exception e) }}

public

void create_socket(inetaddress ip,int

port)

catch

(exception e)

}/**

*/public

static

void

main(string args)

catch

(exception e)

}});

}/**

*/public

cilent()

/*** initialize the contents of the frame.

*/private

void

initialize()

catch

(exception e)

}});

sumbit.setbounds(272, 16, 142, 23);

panel.add(sumbit);

showarea = new

jtextarea();

showarea.setbounds(10, 104, 424, 358);

frmlogincilent.getcontentpane().add(showarea);

sendinfo = new

jtextfield();

sendinfo.setbounds(10, 472, 330, 21);

frmlogincilent.getcontentpane().add(sendinfo);

sendinfo.setcolumns(10);

send = new jbutton("send");

send.addmouselistener(

newmouseadapter()

});send.setbounds(349, 471, 85, 23);

frmlogincilent.getcontentpane().add(send);}}

socket管理類

繼承arraylist,並新增傳送的方法sendtoall(),以及顯示當前連線數目的方法sendcilentinfo()

public

class socketmanager extends

arraylist

synchronized

void

remove(socket x)

synchronized

void

sendtoall(string str)

} catch

(exception e) }}

synchronized

void

sendclientinfo()

}

示例效果:

陣列的概念及例項

陣列的概念及例項 一 什麼是陣列?應該如何宣告。陣列是記憶體中一片連續的儲存空間。宣告陣列有兩種方式 1 通過字面量的方式宣告陣列 例 var a 10,20,30,40,50,60 宣告乙個陣列,該陣列的名稱為a,該陣列共有6個陣列元素。2 通過陣列的 建構函式 宣告陣列 var b new ar...

串列埠通訊的概念及介面電路

串列埠通訊的概念及介面電路 來自中國工控網 隨著計算機系統的應用和微機網路的發展,通訊功能越來越顯的重要。這裡所說的通訊是只計算機與外界的資訊交換。因此,通訊既包括計算機與外部裝置之間,也包括計算機和計算機之間的資訊交換。由於序列通訊是在一根傳輸線上一位一位的傳送資訊,所用的傳輸線少,並且可以借助現...

python模組內建屬性概念及例項

我們在講模組的時候,有些人看到了內建屬性,就把它們當做函式,其實還是有區別的,這裡需要為大家進行明確。我們所看到的函式兩邊帶有雙下劃線,這是python模組中內建屬性的體現。下面我們就內建屬性進性說明,並列出幾種內建屬性的方法,最後帶來例項供大家體會。一種匯入的方法,可以使用 import 直接把模...