網路程式設計:實現連線到網路的計算機之間的網路通訊,比如聊天、傳檔案。
ip:唯一標識網路中的一台計算機。檢視本機ip:
# windows
ipconfig
# linux
ifconfig
埠號:唯一標識一台機器上的某個程序。0-65535,1024以下的基本都被作業系統占用了,盡量使用1024以上的埠。
ip確定是哪台機器,port確定是這台機器上的哪個程序。
網路通訊協議
套接字(socket):ip:port的形式,由ip、port唯一標識。通訊的兩端都有socket,網路通訊其實是socket之間的通訊,資料在2個socket之間通過io流傳輸。
工具類
public
class
udp/**
*監聽埠,接收訊息
*/public
static
void
receive()
throws ioexception
}}
測試類
public
class
test
catch
(ioexception e)}}
);receivethread.
start()
;//怕接收執行緒暫時沒分配到時間片,在傳送訊息之後才執行,沒能接收到掐前面的訊息,可以讓傳送訊息的執行緒沉睡會兒
thread.
sleep
(100);
//也可以單獨開啟一條執行緒來傳送訊息
udp.
send
("127.0.0.1"
,"hello");
}}
udp是不可靠的,不管對方ip存不存在、對方有沒有啟動監聽,直接發出去,不管對方能不能接收到。
工具類
public
class
tcp/**
*監聽埠,接收訊息
*/public
static
void
receive()
throws ioexception
}}
tcp要區分客戶端、服務端,客戶端用socket,服務端用serversocket,通過serversocket獲取與客戶端對應的socket,來與客戶端通訊。
客戶端、服務端是相對的,傳送資料的一方叫做客戶端,接收訊息的一方叫做服務端,通常要同時作為客戶端、服務端。
接收到對方訊息後,可以呼叫send()傳入對方ip與之通訊,也可以寫個過載的send(),傳入與客戶端對應的socket。
測試類
public
class
test
catch
(ioexception e)}}
);receivethread.
start()
;//怕接收執行緒暫時沒分配到時間片,在傳送訊息之後才執行,沒能接收到掐前面的訊息,可以讓傳送訊息的執行緒沉睡會兒
thread.
sleep
(100);
//也可以單獨開啟一條執行緒來傳送訊息
tcp.
send
("127.0.0.1"
,"hello");
}}
tcp提供可靠傳輸,傳送訊息之前要三次握手確定雙方可以正常通訊。 Java Socket實現基於BIO的TCP通訊
bio,即同步並阻塞。服務端會在serversocket物件的accept方法發生阻塞,當有連線進入的時候,才能繼續往下執行 讀取資料,呼叫read方法時,也會發生阻塞。public class bioserver catch ioexception e private static void op...
網路程式設計 NIO三大件及與BIO的區別
二 channel 三 selector 四 bio與nio的區別 buffer本質上就是一塊記憶體區,可以用來寫入資料,實現子類有bytebuffer charbuffer doublebuffer floatbuffer intbuffer longbuffer 和 shortbuffer。優點...
c 實現網路程式設計
服務端程式的編寫 1.建立套接字 socket 2.將套接字繫結到乙個本地位址和埠上.bind 3.將套接字設為監聽模式,準備接收客戶請求 listen 4.等待客戶請求到來,當請求到來後,接收連線請求,返回乙個新的對應於此次連線的套接字 accept 5.用返回的套接字和客戶端進行通訊 send ...