程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 關於TCP的兩個小練習_第一個博客~,tcp練習第一個博客

關於TCP的兩個小練習_第一個博客~,tcp練習第一個博客

編輯:JAVA綜合教程

關於TCP的兩個小練習_第一個博客~,tcp練習第一個博客


先來一個本地的,客戶端發送請求,服務端接收請求的簡單代碼

 1 package com.TCP.java;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.io.OutputStream;
 6 import java.net.InetAddress;
 7 import java.net.ServerSocket;
 8 import java.net.Socket;
 9 import org.junit.Test;
10 
11 //客戶端給服務端發送信息。服務端輸出此信息到控制台上
12 public class TestTCP {
13     // 客戶端
14     @Test
15     public void client() {
16         Socket socket = null;
17         OutputStream os = null;
18         try {
19             // 1.創建一個Socket的對象,通過構造器指明服務器端的IP地址,以及其接收程序的端口號
20             socket = new Socket(InetAddress.getByName("192.168.1.101"), 9090);
21             // 2.getOutputStream():發送數據,方法返回OutputStream的對象
22             os = socket.getOutputStream();
23             // 3.具體的輸出過程
24             os.write("我是客戶端".getBytes());
25         } catch (IOException e) {
26             e.printStackTrace();
27         } finally {
28             // 關閉相應的流和Socket對象
29             try {
30                 if (os != null) {
31                     os.close();
32                 }
33                 if (socket != null) {
34                     socket.close();
35                 }
36             } catch (IOException e) {
37                 e.printStackTrace();
38             }
39         }
40     }
41 
42     // 服務端
43     @Test
44     public void server() {
45         ServerSocket ss = null;
46         Socket s = null;
47         InputStream is = null;
48         try {
49             // 1.創建一個ServerSocket的對象,通過構造器指明自身的端口號
50             ss = new ServerSocket(9090);
51             // 2.調用其accept()方法,返回一個Socket對象
52             s = ss.accept();
53             // 3.調用Socket對象的getInputStream()方法,獲取一個從客戶端發送過來的輸入流
54             is = s.getInputStream();
55             // 4.對獲取的流進行操作
56             byte[] b = new byte[20];
57             int length;
58             while ((length = is.read(b)) != -1) {
59                 String str = new String(b, 0, length);
60                 System.out.println(str);
61             }
62             System.out.println("收到來自於" + s.getInetAddress().getHostName() + "的連接");
63         } catch (IOException e) {
64             e.printStackTrace();
65         } finally {
66             // 關閉相應的流,Socket,ServerSocket對象
67             if (is != null) {
68                 try {
69                     is.close();
70                 } catch (IOException e) {
71                     e.printStackTrace();
72                 }
73             }
74             if (s != null) {
75                 try {
76                     s.close();
77                 } catch (IOException e) {
78                     e.printStackTrace();
79                 }
80             }
81             if (ss != null) {
82                 try {
83                     ss.close();
84                 } catch (IOException e) {
85                     e.printStackTrace();
86                 }
87             }
88         }
89     }
90 }

 

再來一個稍復雜的,在服務器收到客戶端發送的請求時,給一個友好的回饋

 

  1 package com.TCP.java;
  2 
  3 import java.io.IOException;
  4 import java.io.InputStream;
  5 import java.io.OutputStream;
  6 import java.net.InetAddress;
  7 import java.net.ServerSocket;
  8 import java.net.Socket;
  9 import java.net.UnknownHostException;
 10 
 11 import org.junit.Test;
 12 
 13 //客戶端給服務端發送信息,服務端打印信息到控制台上,同時發送“已收到信息”給客戶端
 14 public class TestTCP2 {
 15     //客戶端
 16     @Test
 17     public void client(){
 18         Socket s = null;
 19         OutputStream os = null;
 20         InputStream is = null;
 21         try {
 22             s = new Socket(InetAddress.getByName("192.168.1.101"),9797);
 23             os = s.getOutputStream();
 24             os.write("我是客戶端".getBytes());
 25             
 26             //shutdownOutput():執行此方法,可以顯式的告訴服務端發送完畢
 27             s.shutdownOutput();
 28             
 29             is = s.getInputStream();
 30             byte[] b = new byte[20];
 31             int length;
 32             while((length = is.read(b)) != -1){
 33                 String str = new String(b,0,length);
 34                 System.out.println(str);
 35             }
 36         } catch (UnknownHostException e) {
 37             // TODO Auto-generated catch block
 38             e.printStackTrace();
 39         } catch (IOException e) {
 40             // TODO Auto-generated catch block
 41             e.printStackTrace();
 42         }
 43         if(is != null){
 44             try {
 45                 is.close();
 46             } catch (IOException e) {
 47                 // TODO Auto-generated catch block
 48                 e.printStackTrace();
 49             }
 50         }
 51         if(os != null){
 52             try {
 53                 os.close();
 54             } catch (IOException e) {
 55                 // TODO Auto-generated catch block
 56                 e.printStackTrace();
 57             }
 58         }
 59         if(s != null){
 60             try {
 61                 s.close();
 62             } catch (IOException e) {
 63                 // TODO Auto-generated catch block
 64                 e.printStackTrace();
 65             }
 66         }
 67     }
 68     //服務端
 69     @Test
 70     public void server(){
 71         ServerSocket ss = null;
 72         Socket s = null;
 73         InputStream is = null;
 74         OutputStream os = null;
 75         try {
 76             ss = new ServerSocket(9797);
 77             s = ss.accept();
 78             is = s.getInputStream();
 79             
 80             byte[] b = new byte[20];
 81             int length;
 82             while((length = is.read(b)) != -1){
 83                 String str = new String(b, 0, length);
 84                 System.out.println(str);
 85             }
 86             
 87             os = s.getOutputStream();
 88             os.write("已收到請求".getBytes());
 89         } catch (IOException e) {
 90             // TODO Auto-generated catch block
 91             e.printStackTrace();
 92         }
 93         finally{
 94             if(os != null){
 95                 try {
 96                     os.close();
 97                 } catch (IOException e) {
 98                     // TODO Auto-generated catch block
 99                     e.printStackTrace();
100                 }
101             }
102             if(is != null){
103                 try {
104                     is.close();
105                 } catch (IOException e) {
106                     // TODO Auto-generated catch block
107                     e.printStackTrace();
108                 }
109             }
110             if(s != null){
111                 try {
112                     s.close();
113                 } catch (IOException e) {
114                     // TODO Auto-generated catch block
115                     e.printStackTrace();
116                 }
117             }
118             if(ss != null){
119                 try {
120                     ss.close();
121                 } catch (IOException e) {
122                     // TODO Auto-generated catch block
123                     e.printStackTrace();
124                 }
125             }
126         }
127     }
128 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved