1. 程式人生 > >tcp Java對話例子

tcp Java對話例子

udp通訊協議特點:

     1.將資料及其源和目的的封裝為資料包,面向無連線

     2.每個資料包大小限制64K

     3.因為無連線,所以不可靠

     4.因為無連線,所以速度快 

     5.udp通訊部分客戶端和服務端的,分發送端和接收端

tcp通訊的特點:

  1.tcp是基於io流進行資料的傳輸的,面向連線的

  2.tcp

進行資料資料傳輸的時候沒有大小限制

  3.tcp是通過三次握手機制,保證資料的完整性,可靠協議

  4.tcp是面向連線的,所以速度慢

  5.tcp是區分客戶端與服務端的

  

  

  tcp協議下的socket類:

       1.socket(客戶端類):tcp的客戶端一旦啟動那個,以服務端一定要建立連線

       2.serversocket

(服務端類):

 

 tcp的客戶端建立步驟:

 1.建立tcp的客戶端服務

 2.獲取對應的流物件

 3.寫出或讀取資料

  4. 關閉資源


package cn.tcp;

import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.Socket;

public class Demo1Clinet {

	public static void main(String[] args) throws IOException {
		//建立tcp服務
		Socket socket=new Socket(InetAddress.getLocalHost(),9090);
	//獲取到socket的輸出流物件
		java.io.OutputStream outputstream=socket.getOutputStream();
		//利用輸出流把資料寫出即可
		outputstream.write("hello".getBytes());
		//獲取到一個輸入流物件,讀取服務端回送的資料
		InputStream inputStream=socket.getInputStream();
		byte[] buf=new byte[1024];
		int length=inputStream.read();
		System.out.println(new String(buf,0,length));
		
		
		//關閉資源
		socket.close();
	}
	
	
}


Java.net.BindException 埠被佔用

ServerSocket的使用步驟::

 1.建立tcp服務端的服務

 2.接受客戶端的連線,得到一個Socket物件

 3.獲取對應的流物件,讀取或者寫出資料

 4.關閉資源


package cn.tcp;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Demo1Server {

	public static void main(String[] args) throws IOException {
		//建立tcp的服務端,並建立一個監聽埠
		ServerSocket serversocket=new ServerSocket(9090);
	   //接受客戶端的連線,accept()接受客戶端的連線方法也是一個阻塞型的方法,沒有客戶端與其連線時,會一直等待下去。
		Socket socket=serversocket.accept();
		//獲取輸入流物件,讀取客戶端傳送的內容
		InputStream inputstream=socket.getInputStream();
		byte[] buf=new byte[1024];
		int length=0;
		length=inputstream.read(buf);
		System.out.println(new String(buf,0,length));
	    //獲取輸出流物件,向客戶端發訊息
		OutputStream outputstream= socket.getOutputStream();
		outputstream.write("shoudao".getBytes());
		
		//關閉資源
		serversocket.close();
	}
}