udp將資料及源和目的封裝成資料報,不需要建立連線
每個資料報的大小限制在64k以內
因無連線,是不可靠協議
不需要建立連線,速度快
tcp建立連線,形成傳輸資料的通道
在連線中進行大資料量傳輸
通過三次握手完成連線,是可靠協議
必須建立連線,效率會稍低
udp傳輸類似於對講機,它使用端點(datagramsocket)和資料報(datagrampacket),端點可以作為傳送端或接收端其中的乙個,它不需要進行連線,只需要傳送端將資料打包成資料報並傳送出去,接收端接收資料報並讀取資料即可。
下面看乙個簡單的小例子
傳送端**
public
class udpsenddemo
}
接收端**
public
class udprecedemo
}
上面的例子中進行了乙個簡單的udp傳輸,實際的應用中傳送端肯定不會只傳送一次資料,也不一定只有乙個傳送端。下面這個例子是使用udp傳輸協議完成的區域網聊天程式
聊天室程式
需求:
1,可以向區域網內其他使用者傳送訊息
2,可以接收區域網內其他使用者發來的訊息
3,傳送和接收可以同時進行
分析:
1,為了傳送訊息,建立了傳送端
2,為了接收訊息,建立了接收端
3,為了同時進行傳送和接收,使用了多執行緒技術,將傳送和接收封裝成任務
傳送端**
public
class
send
implements
runnable
@override
public
void
run()
}catch (ioexception e)
ds.close();}}
接收端**
public
class
rece
implements
runnable
@override
public
void
run()
}catch (ioexception e) finally}}
主程式**
public
class chat
}
由於udp的可靠性和單次傳輸大小,它的使用範圍比tcp要窄很多,所以多數情況下選擇使用tcp協議進行傳輸。
tcp與udp的端點和資料報的傳輸模式不同,它分為客戶端(socket)和服務端(serversocket)。服務端接收客戶端的請求,與客戶端建立連線,形成通道,進行資料的相互傳輸。
客戶端與服務端的資料傳輸依靠socket流,它通過s.getinputstream()和s.getoutputstream()獲取輸入流和輸出流。
下面看乙個簡單的tcp傳輸例子
需求:
建立乙個上傳伺服器,客戶端可以將本地上傳到服務端
分析:
1,建立客戶端,向服務端上傳
2,建立服務端,接收客戶端上傳的
3,服務端可以同時連線多個客戶端,使用多執行緒技術,將服務端接收客戶端的**封裝成服務端的執行緒任務。
4,服務端迴圈等待客戶端連線,並開啟新的執行緒任務進行該客戶端上傳任務。
客戶端**
public
class uploadpicclient
//告訴客戶端資料傳送完畢
s.shutdownoutput();
//4,讀取服務端發回的內容
bufferedreader bufin = new bufferedreader(new inputstreamreader(s.getinputstream()));
string str = null;
str = bufin.readline();
system.out.println(str);
} catch (unknownhostexception e) catch (ioexception e) finally catch (ioexception e) }}
}
服務端**
public
class uploadpicserver
} catch (ioexception e) }}
服務任務**
public
class
task
implements
runnable
@override
public
void
run()
system.out.println(ip+"...connected");
try
fos = new fileoutputstream(file);
while((len=in.read(buf))!=-1)
//建立socket輸出流,將上傳完畢的資訊傳送給
printwriter out = new printwriter(s.getoutputstream(),true);
out.println("上傳完畢");
} catch (filenotfoundexception e) catch (ioexception e)finally catch (ioexception e) }}
}
1,客戶端和服務端的socket流在寫入資料時需要進行重新整理,否則另外一端會不斷的等待資料的傳輸。
2,資料傳輸完畢後需要向另一端傳送結束標記,使用socket流的shutdownoutput()方法。
網路程式設計 Socket程式設計
一 網路部分 1.ip 2.埠號 在網路協議中使用埠號識別主機上不同的程序,不同的埠對應於不同的服務 應用程式 3.協議 tcp二 socket部門socket通訊基本流程圖 根據socket通訊基本流程圖,總結通訊的基本步驟 伺服器端 第一步 建立乙個用於監聽連線的socket對像 第二步 用指定...
socket網路程式設計
首先認識乙個表示主機資訊的結構體 struct hostent h addrtype 這是表示主機所使用的位址型別的定義,在c語言winsock2.h標頭檔案中以 af 開頭的巨集定義就是它的值。如果使用的是ipv4,則值為 af inet 如果是ipv6,值為 af inet4 h length ...
Socket網路程式設計
socket 網路程式設計 在c free中建立乙個對話方塊工程,取名socket1,建立如下檔案結構 main.h ifndef main h define main h include bool winapi main proc hwnd hwnd,uint umsg,wparam wparam...