/*
演示tcp傳輸。
1,tcp分客戶端和服務端。
2,客戶端對應的對象是Socket。
服務端對應的對象是ServerSocket。
*/
/*
客戶端,
通過查閱socket對象,發現在該對象建立時,就可以去連接指定主機。
因爲tcp是面向連接的。所以在建立socket服務時,
就要有服務端存在,並連接成功。形成通路後,在該通道進行數據的傳輸。
需求:給服務端發送給一個文本數據。
步驟:
1,創建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.101",10003);
//爲了發送數據,應該獲取socket流中的輸出流。
OutputStream out = s.getOutputStream();
out.write("tcp ge men lai le ".getBytes());
s.close();
}
}
/*
需求:定義端點接收數據並打印在控制檯上。
服務端:
1,建立服務端的socket服務。ServerSocket();
並監聽一個端口。
2,獲取連接過來的客戶端對象。
通過ServerSokcet的 accept方法。沒有連接就會等,所以這個方法阻塞式的。
3,客戶端如果發過來數據,那麼服務端要使用對應的客戶端對象,並獲取到該客戶端對象的讀取流來讀取發過來的數據。
並打印在控制檯。
4,關閉服務端。(可選)
*/
class TcpServer
{
public static void main(String[] args) throws Exception
{
//建立服務端socket服務。並監聽一個端口。
ServerSocket ss = new ServerSocket(10003);
//通過accept方法獲取連接過來的客戶端對象。
while(true)
{
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+".....connected");
//獲取客戶端發送過來的數據,那麼要使用客戶端對象的讀取流來讀取數據。
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf,0,len));
s.close();//關閉客戶端.
}
//ss.close();
}
}
TCP通信(java實現)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.