創建TCP連接時,主動發起連接的叫客戶端,被動響應連接的叫服務器。
這裏我們先寫服務器端
package tcp;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServer {
public static void main(String[] args) throws IOException {
/*
創建tcp服務端
思路:
1.創建tcp服務器端服務,服務器端爲了讓客戶端可以連接上,必須提供端口,監聽一個端口
2.獲取客戶端對象,通過客戶端的socket流和對i贏得客戶端進行通信
3.獲取客戶端的socket流的讀取流
4.讀取數據並顯示在服務端
5.關閉資源
*/
System.out.println("服務器端啓動。。。");
//1
ServerSocket ss=new ServerSocket(10003);
//2
Socket s=ss.accept();
String ip=ss.getInetAddress().getHostAddress();
System.out.println(ip+"...connected");
//3
InputStream in=s.getInputStream();
//4
byte[] buf=new byte[1024];
int len=in.read(buf);
String str=new String(buf,0,len);
System.out.println(str);
//5
s.close();
ss.close();
}
}
然後是客戶端
package tcp;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class TcpClient {
public static void main(String[] args) throws IOException {
/*
* 思路:
* 1.建立tcp客戶端服務。
* 1.1因爲是面向連接,必須有連接纔可以進行通信
* 1.2在創建客戶端是,就必須明確目的地址和端口
* 2.一旦連接建立,就有了傳輸數據的通道。就可以在通道中進行數據傳輸。
* 這個傳輸其實就是通過流實現的。就是socket io流
* 3.獲取socket io中的寫動作,將數據寫到socket流中發給分服務端
* 4.關閉資源
*/
System.out.println("客戶端啓動。。。");
//1
Socket s = new Socket("192.168.89.232", 10003);
//2
OutputStream out = s.getOutputStream();
//3
out.write("注意,tcp客戶端來了。。".getBytes());
//4
s.close();
}
}