激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

服務(wù)器之家 - 編程語言 - JAVA教程 - Java簡單實現(xiàn)UDP和TCP的示例

Java簡單實現(xiàn)UDP和TCP的示例

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

下面小編就為大家?guī)硪黄狫ava簡單實現(xiàn)UDP和TCP的示例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

tcp實現(xiàn)

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

Java簡單實現(xiàn)UDP和TCP的示例

簡單的tcp實現(xiàn)

?
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
//服務(wù)端
public class tcpserver {
 public static void main(string[] args) throws ioexception {
  serversocket serversocket = new serversocket(8886); // 建立服務(wù)端,ip為本機(jī)ip,端口為8886
  socket accept = serversocket.accept(); // 監(jiān)聽客戶端的連接,一旦有客戶端連接,則會返回客戶端對應(yīng)的accept
  
  inputstream in = accept.getinputstream(); //獲取到客戶端的輸出流
  byte b[] = new byte[1024];
  int len = in.read(b);
  system.out.println("接受到客戶端數(shù)據(jù),返回數(shù)據(jù)"+new string(b,0,len));
  
  outputstream out = accept.getoutputstream(); // 給客戶端發(fā)送消息
  out.write("服務(wù)端已經(jīng)接受".getbytes());
  
  serversocket.close();
 }
}
 
// 客戶端
public class tcpclient {
 public static void main(string[] args) throws ioexception {
  socket socket = new socket("127.0.0.1", 8886); // 通過socket來建立和服務(wù)端的連接
  outputstream out = socket.getoutputstream(); // 獲取輸出流(客戶端輸出流即向服務(wù)端輸出信息)
  out.write("hello tcp server".getbytes()); // 輸出信息
  
  inputstream in = socket.getinputstream(); // 接受服務(wù)端的消息
  byte b[] = new byte[1024];
  int len = in.read(b);
  system.out.println("接受到服務(wù)器消息 : "+new string(b,0,len)); // 輸出
  out.write("返回的的數(shù)據(jù)已經(jīng)收到 ".getbytes()); // 向服務(wù)器返回消息
  socket.close();
 }
}

改進(jìn)服務(wù)端,啟用多線程來接受客戶端的數(shù)據(jù)

?
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); // 建立服務(wù)端,ip為本機(jī)ip,端口為8886
  int i=4;
  while(i>2){
   socket accept = serversocket.accept(); // 監(jiān)聽客戶端的連接,一旦有客戶端連接,則會返回客戶端對應(yīng)的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("接受到客戶端數(shù)據(jù),返回數(shù)據(jù)" + new string(b, 0, len));
   outputstream out = accept.getoutputstream(); // 給客戶端發(fā)送消息
   out.write("服務(wù)端已經(jīng)接受".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
// 服務(wù)端
 
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(); // 別忘了刷新,要不然最后一塊緩沖區(qū)字符串會缺失
  }
 
  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(); // 刷新緩沖區(qū) 要不然最后一塊緩沖區(qū)字符串會缺失
  }
  
  socket.shutdownoutput(); // 關(guān)閉流以后server段才會接收道結(jié)束字符結(jié)束接受
 
  bufferedreader br = new bufferedreader(new inputstreamreader(socket.getinputstream()));
  string line;
  while ((line = br.readline()) != null) {
   system.out.println(line);
  }
  
  in.close();
  socket.close();
 
 }
 
}

udp實現(xiàn)

udp是將數(shù)據(jù)打成數(shù)據(jù)包向?qū)Ψ桨l(fā)送,只關(guān)系是否發(fā)送成功,而不關(guān)心是否接收成功,傳輸速度快,但是可靠性低。

udp代碼實現(xiàn)

?
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
// 發(fā)送端
public class senddemo {
 public static void main(string[] args) throws ioexception {
  datagramsocket ds = new datagramsocket(); // 此類表示用來發(fā)送和接收數(shù)據(jù)報包的套接字。
  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); // 數(shù)據(jù)包對象
   ds.send(dp);
   if ("886".equals(line)) { // 當(dāng)輸入886時結(jié)束發(fā)送
    break;
   }
  }
  ds.close();
 }
 
}
 
 
// 接收端
 
public class recivedemo {
 public static void main(string[] args) throws ioexception {
  datagramsocket ds = new datagramsocket(10005); // 建立服務(wù)端
  byte bytes[] = new byte[1024];
  datagrampacket dp = new datagrampacket(bytes, bytes.length); // 建立數(shù)據(jù)包對象
  while (true) {
   ds.receive(dp); // 接受數(shù)據(jù)包
   byte[] data = dp.getdata(); // 獲取數(shù)據(jù)
   string str = new string(data, 0, dp.getlength());
   if ("886".equals(str)) {
    break;
   }
   system.out.println(str);
  }
  ds.close();
 }
}

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

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

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 欧美精品国产综合久久 | 亚洲最大中文字幕 | 亚州综合图片 | 久久久入口 | 国产深夜福利视频在线播放 | 国产精品一区二区视频 | 久久久三区 | 亚洲第一视频在线 | 天天看天天摸天天操 | 成人激情视频网站 | 91精品国产刺激国语对白 | 欧美 国产 综合 | 斗破苍穹在线免费 | 欧美一级成人 | 精品在线观看一区 | 国产艳妇av视国产精选av一区 | 色播av在线| 欧美日韩在线视频观看 | 国产一区二区影视 | 男人的天堂视频网站 | 日韩精品久久久久久久电影99爱 | 五月天影院,久久综合, | 网站毛片 | 久草热久草视频 | 国产亚洲精品久久久久久久久久 | 99国语露脸久久精品国产ktv | 国产免费一区二区三区网站免费 | 中国毛片在线观看 | 在线成人免费观看视频 | 久久影院免费观看 | 在线天堂中文字幕 | 午夜生活理论片 | 99久久久国产精品免费99 | 午夜精品久久久久久中宇 | 污黄视频在线播放 | 大西瓜永久免费av在线 | 国产精品久久久久久婷婷天堂 | 精品一区二区久久久久久久网精 | 精国产品一区二区三区四季综 | 精品国产一区二区三区四区阿崩 | 午夜精品久久久久久毛片 |