1. 程式人生 > >JAVA_TCP客戶端服務端

JAVA_TCP客戶端服務端

服務端:

package cn.itcast.tcp.demo;

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

/**
 * 服務端接收客戶端傳送來的資料,並列印帶控制檯上
 * 
 * 建立TCP連線思路:
 * 
 * 1、首先建立服務端服務,通過ServeSocket物件
 * 
 * 2、客戶端必須對外提供一個埠,否則無法連線
 * 
 * 3、服務端獲取客戶端的物件
 * 
 * 4、通過客戶端物件獲取Socket流,並把資料列印在控制檯上
 * 
 * 5、關閉流,客戶端的和服務端的。
 * 
 * */
public class ServeDemo {

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

//		1、首先建立服務端服務,通過ServerSocket物件
		ServerSocket ss=new ServerSocket(10012);
		
//		2、服務端獲取客戶端的物件
		Socket s=ss.accept();//阻塞式的方法
		String ip=s.getInetAddress().getHostAddress();
		
//		3、通過客戶端物件獲取Socket流,並把資料列印在控制檯上
		InputStream is=s.getInputStream();
		byte[]buff=new byte[1024];
		int len=is.read(buff);
		String txt=new String(buff, 0, len);
		
//		4、列印資料
		System.out.println(ip+"::::"+txt);
		
//		5、給客戶端回覆資料,通過客戶端的socket流的outputstream流
		OutputStream os=s.getOutputStream();
		
//		6、給客戶端寫入資料
		os.write("我知道了".getBytes());
		
//		7、關閉資源
		s.close();
		ss.close();
	
	}

}

客戶端:

package cn.itcast.tcp.demo;

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

/**
 * Tcp傳輸客戶端床墊過程
 * 
 * 1、建立Tcp的Socket服務,使用的是Socket物件,建議一開始就明確目的地,要連線的主機;
 * 
 * 2、如果建立成功,說明資料已經連上。
 * 該通道是Socket流,是底層建立好的,可以通過Socket物件獲取輸入和輸出流物件。
 * 通過getoutputstream()和getinputstream()來獲取。
 * 
 * 3、將資料通過流物件傳送出去;
 * 
 * 4、關閉socket流。
 * 
 * */

public class ClientDemo {

	public static void main(String[] args) throws UnknownHostException, IOException {
		
//		1、建立socket服務
		Socket st=new Socket("192.168.1.216",10012);
		
//		2、獲取輸出流
		OutputStream os=st.getOutputStream();
		
//		3、將資料寫到流上
		os.write("tcp客戶端:我來了!!!".getBytes());

//		4、讀取服務端發過來的資料
		InputStream is=st.getInputStream();

//		5、將資料儲存下來
		byte[]buff=new byte[1024];
		int len=is.read(buff);
		String txt=new String(buff, 0, len);
	
//		6、將資料列印
		System.out.println(txt);				
		
//		4、關閉流
		st.close();
		
	}
}