1. 程式人生 > >TCP傳送接收資料(一)

TCP傳送接收資料(一)

TCP傳送接收資料

import java.io.IOException;

import java.io.OutputStream;

import java.net.Socket;

/*

 * TCP協議傳送資料:

 * A:建立傳送端的Socket物件

 *    這一步如果成功,就說明連線已經建立成功了。

 * B:獲取輸出流,寫資料

 * C:釋放資源

 *

 * 連線被拒絕。TCP協議一定要先看伺服器。

 * java.net.ConnectException: Connectionrefused: connect

 */

public classClientDemo {

   public

static void main(String[] args)throws IOException {

      // 建立傳送端的Socket物件

      // Socket(InetAddress address, int port)

      // Socket(String host, int port)

      // Socket s = newSocket(InetAddress.getByName("192.168.12.92"), 8888);

      Sockets = newSocket("219.216.80.19", 8888);

      // 獲取輸出流,寫資料

      // public OutputStream getOutputStream()

      OutputStreamos = s.getOutputStream();

      os.write("hello,tcp,我來了".getBytes());

      // 釋放資源

      s.close();

   }

}

import java.io.IOException;

import java.io.InputStream;

import java.net.ServerSocket;

import java.net.Socket;

/*

 *TCP協議接收資料:

 * A:建立接收端的Socket物件

 * B:監聽客戶端連線。返回一個對應的Socket物件

 * C:獲取輸入流,讀取資料顯示在控制檯

 * D:釋放資源

 */

public class ServerDemo {

         publicstatic void main(String[] args) throws IOException {

                   //建立接收端的Socket物件

                   //ServerSocket(int port)

                   ServerSocketss = new ServerSocket(8888);

                   //監聽客戶端連線。返回一個對應的Socket物件

                   //public Socket accept()

                   Sockets = ss.accept(); // 偵聽並接受到此套接字的連線。此方法在連線傳入之前一直阻塞。

                   //獲取輸入流,讀取資料顯示在控制檯

                   InputStreamis = s.getInputStream();

                   byte[]bys = new byte[1024];

                   intlen = is.read(bys); // 阻塞式方法

                   Stringstr = new String(bys, 0, len);

                   Stringip = s.getInetAddress().getHostAddress();

                   System.out.println(ip+ "---" + str);

                   //釋放資源

                   s.close();

                   //ss.close(); //這個不應該關閉

         }

}

TCP傳送接收圖解: