黑馬程式設計師 【】java學習之路——TCP客戶端和服務端的建立
-------
android培訓、java培訓、期待與您交流! ----------
1:tcp分客戶端和服務端
2:客戶端對應的物件是Socket
服務端對應的是ServerSocket
演示:tcp的客戶端和服務端的互訪
需求:客戶端給服務端傳送資料,服務端收到後,給客戶端反饋資訊
*/
/*
客戶端:
通過查閱socket物件,發現在該物件建立時,就可以連線指定的主機。
因為TCP是面向連線的,所以在建立Socket服務時,就要有服務端在,並連線成功,
形成通路後,在該通道進行資料的傳輸
需求:給服務端傳送一個文字資料。
步驟:
1,建立Socket服務,並指定要連線的主機介面。
2,獲取socket流中的輸出流,將資料寫到該流中,通過網路傳送到服務端。
3,獲取socket流中的輸入流,講服務端反饋的資料獲取到並列印。
*/
import java.io.*;
import java.net.*;
class TcpClient
{
public static void main(String[] args) throws Exception
{
//建立客戶端的socket服務。指定目的主機和埠
Socket s = new Socket("192.168.1.104",10003);
//為了傳送資料,應該獲取socket流中的輸出流
OutputStream out = s.getOutputStream();
out.write("哥們你好 ".getBytes());
InputStream in = s.getInputStream();
byte [] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf,0,len));
s.close();
}
}
/*
需求:
定義端點接收資料,並列印在控制檯上
服務端
1,建立服務端的Socket服務。ServerSocket();並監聽一個埠。
2,獲取連結過來的客戶端物件。通過serversocket的accept方法。沒有連線就會等。所以這個方法是阻塞式的。
3,客戶端如果發過來資料,那麼服務端要使用對應的客戶端物件,並獲取到該客戶端物件的讀取流來讀取發過來的資料。
4,關閉服務端(可選的,不一定要關掉)
*/
class TcpServer
{
public static void main(String[] args) throws Exception
{
//建立服務端的socket並監聽一個埠。
ServerSocket ss = new ServerSocket(10003);
//通過accept方法獲取連線過來的客戶端物件
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"//////connectede");
//獲取客戶端傳送過來的資料,那麼要使用客戶端物件的讀取流方法來讀取資料。
InputStream in = s.getInputStream();
byte [] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf,0,len));
OutputStream out = s.getOutputStream();
out.write("哥們收到了,你也好".getBytes());
s.close();//關閉客戶端
ss.close();
}
}