tcp Java對話例子
阿新 • • 發佈:2018-11-20
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();
}
}