一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - JAVA教程 - Java簡單實現UDP和TCP的示例

Java簡單實現UDP和TCP的示例

2021-01-31 16:47cccc_hi JAVA教程

下面小編就為大家帶來一篇Java簡單實現UDP和TCP的示例。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

tcp實現

tcp協議需要在雙方之間建立連接,通過輸入輸出流來進行數據的交換,建立需要通過三次握手,斷開需要四次揮手,保證了數據的完整性,但傳輸效率也會相應的降低。

Java簡單實現UDP和TCP的示例

簡單的tcp實現

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//服務端
public class tcpserver {
 public static void main(string[] args) throws ioexception {
  serversocket serversocket = new serversocket(8886); // 建立服務端,ip為本機ip,端口為8886
  socket accept = serversocket.accept(); // 監聽客戶端的連接,一旦有客戶端連接,則會返回客戶端對應的accept
  
  inputstream in = accept.getinputstream(); //獲取到客戶端的輸出流
  byte b[] = new byte[1024];
  int len = in.read(b);
  system.out.println("接受到客戶端數據,返回數據"+new string(b,0,len));
  
  outputstream out = accept.getoutputstream(); // 給客戶端發送消息
  out.write("服務端已經接受".getbytes());
  
  serversocket.close();
 }
}
 
// 客戶端
public class tcpclient {
 public static void main(string[] args) throws ioexception {
  socket socket = new socket("127.0.0.1", 8886); // 通過socket來建立和服務端的連接
  outputstream out = socket.getoutputstream(); // 獲取輸出流(客戶端輸出流即向服務端輸出信息)
  out.write("hello tcp server".getbytes()); // 輸出信息
  
  inputstream in = socket.getinputstream(); // 接受服務端的消息
  byte b[] = new byte[1024];
  int len = in.read(b);
  system.out.println("接受到服務器消息 : "+new string(b,0,len)); // 輸出
  out.write("返回的的數據已經收到 ".getbytes()); // 向服務器返回消息
  socket.close();
 }
}

改進服務端,啟用多線程來接受客戶端的數據

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// server
 public static void main(string[] args) throws ioexception {
  serversocket serversocket = new serversocket(8886); // 建立服務端,ip為本機ip,端口為8886
  int i=4;
  while(i>2){
   socket accept = serversocket.accept(); // 監聽客戶端的連接,一旦有客戶端連接,則會返回客戶端對應的accept
   
   serverthread st = new serverthread(accept); // 啟動線程
   thread th = new thread(st);
   th.start();
  }
  serversocket.close();
 }
 
// thread
 
public class serverthread implements runnable {
 private socket accept;
 public serverthread(socket s) {
  this.accept = s;
 }
 public void run(){
  inputstream in;
  try {
   in = accept.getinputstream();
   byte b[] = new byte[1024];
   int len = in.read(b);
   system.out.println("接受到客戶端數據,返回數據" + new string(b, 0, len));
   outputstream out = accept.getoutputstream(); // 給客戶端發送消息
   out.write("服務端已經接受".getbytes());
  } catch (ioexception e) {
   e.printstacktrace();
  }
 }
}

傳遞圖片

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// 服務端
 
public class server {
 public static void main(string[] args) throws ioexception {
 
  serversocket serversocket = new serversocket(5555);
  socket ss = serversocket.accept();
  
  bufferedinputstream br = new bufferedinputstream(ss.getinputstream());
 
  bufferedoutputstream bw = new bufferedoutputstream(new fileoutputstream("copy.jpg")); // 寫出文件流
  
  byte b[] = new byte[1024];
  int len = 0;
 
  while ((len = br.read(b)) != -1) { // 寫出文件
   bw.write(b, 0, len);
   bw.flush(); // 別忘了刷新,要不然最后一塊緩沖區字符串會缺失
  }
 
  bufferedwriter bw2 = new bufferedwriter(new outputstreamwriter(ss.getoutputstream())); // 輸出
  bw2.write("圖片傳輸成功");
  bw2.flush();
  
  bw.close();
  ss.close();
 }
 
}
 
 
// 客戶端
 
public class client {
 public static void main(string[] args) throws unknownhostexception, ioexception {
  socket socket = new socket("127.0.0.1", 5555);
  bufferedinputstream in = new bufferedinputstream(new fileinputstream("c.jpg"));
 
  bufferedoutputstream out = new bufferedoutputstream(socket.getoutputstream());
 
  byte b[] = new byte[1024];
  int len = 0;
 
  while ((len = in.read(b)) != -1) {
   out.write(b, 0, len);
   out.flush(); // 刷新緩沖區 要不然最后一塊緩沖區字符串會缺失
  }
  
  socket.shutdownoutput(); // 關閉流以后server段才會接收道結束字符結束接受
 
  bufferedreader br = new bufferedreader(new inputstreamreader(socket.getinputstream()));
  string line;
  while ((line = br.readline()) != null) {
   system.out.println(line);
  }
  
  in.close();
  socket.close();
 
 }
 
}

udp實現

udp是將數據打成數據包向對方發送,只關系是否發送成功,而不關心是否接收成功,傳輸速度快,但是可靠性低。

udp代碼實現

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// 發送端
public class senddemo {
 public static void main(string[] args) throws ioexception {
  datagramsocket ds = new datagramsocket(); // 此類表示用來發送和接收數據報包的套接字。
  bufferedreader br = new bufferedreader(new inputstreamreader(system.in)); // 鍵盤輸入
  string line = null;
  while ((line = br.readline()) != null) {
   byte[] bytes = line.getbytes();
   datagrampacket dp = new datagrampacket(bytes, bytes.length, inetaddress.getbyname("127.0.0.1"), 10005); // 數據包對象
   ds.send(dp);
   if ("886".equals(line)) { // 當輸入886時結束發送
    break;
   }
  }
  ds.close();
 }
 
}
 
 
// 接收端
 
public class recivedemo {
 public static void main(string[] args) throws ioexception {
  datagramsocket ds = new datagramsocket(10005); // 建立服務端
  byte bytes[] = new byte[1024];
  datagrampacket dp = new datagrampacket(bytes, bytes.length); // 建立數據包對象
  while (true) {
   ds.receive(dp); // 接受數據包
   byte[] data = dp.getdata(); // 獲取數據
   string str = new string(data, 0, dp.getlength());
   if ("886".equals(str)) {
    break;
   }
   system.out.println(str);
  }
  ds.close();
 }
}

以上這篇java簡單實現udp和tcp的示例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/liyuhui-Z/p/7794829.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产大片51精品免费观看 | 精品国产自在现线拍国语 | 91制片厂果冻星空传媒3xg | 青青青手机在线视频 | 亚洲邪恶天堂影院在线观看 | 免看一级a一片成人123 | 韩剧在线观看 | 亚洲午夜小视频 | 小草高清视频免费直播 | 色久久一个亚洲综合网 | 午夜私人福利影院 | 深夜视频免费看 | 2018久久精品热在线观看 | 99精品国产高清一区二区三区香蕉 | 美女翘臀跪床被打屁股作文 | 99热综合在线 | 亚洲午夜小视频 | 俄罗斯海滩厕所偷窥 | 国产精品夜夜爽张柏芝 | 久久人妻熟女中文字幕AV蜜芽 | 国产高清视频一区二区 | 视频在线免费看 | 强波多野结衣女教师 | 校园春色偷拍自拍 | 国产hd老太婆 | 九九热这里只有精品视频免费 | 日本一级不卡一二三区免费 | 日韩成人在线网站 | 欧美肥胖老妇做爰变态 | 韩国三级2020 | 插入肥臀 | 国产在线视频福利 | 色悠久久久久综合欧美99 | 亚洲男人的天堂网站 | 国产精品日本亚洲777 | 成人精品第一区二区三区 | 四虎成人免费大片在线 | 99热在线国产 | 日本又黄又裸一级大黄裸片 | 亚洲欧洲日产国码天堂 | 欧美肥胖老妇做爰变态 |