TCP傳送接收資料(一)
TCP傳送接收資料
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
/*
* TCP協議傳送資料:
* A:建立傳送端的Socket物件
* 這一步如果成功,就說明連線已經建立成功了。
* B:獲取輸出流,寫資料
* C:釋放資源
*
* 連線被拒絕。TCP協議一定要先看伺服器。
* java.net.ConnectException: Connectionrefused: connect
*/
public classClientDemo {
public
// 建立傳送端的Socket物件
// Socket(InetAddress address, int port)
// Socket(String host, int port)
// Socket s = newSocket(InetAddress.getByName("192.168.12.92"), 8888);
Sockets = newSocket("219.216.80.19", 8888);
// 獲取輸出流,寫資料
// public OutputStream getOutputStream()
OutputStreamos = s.getOutputStream();
os.write("hello,tcp,我來了".getBytes());
// 釋放資源
s.close();
}
}
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*
*TCP協議接收資料:
* A:建立接收端的Socket物件
* B:監聽客戶端連線。返回一個對應的Socket物件
* C:獲取輸入流,讀取資料顯示在控制檯
* D:釋放資源
*/
public class ServerDemo {
publicstatic void main(String[] args) throws IOException {
//建立接收端的Socket物件
//ServerSocket(int port)
ServerSocketss = new ServerSocket(8888);
//監聽客戶端連線。返回一個對應的Socket物件
//public Socket accept()
Sockets = ss.accept(); // 偵聽並接受到此套接字的連線。此方法在連線傳入之前一直阻塞。
//獲取輸入流,讀取資料顯示在控制檯
InputStreamis = s.getInputStream();
byte[]bys = new byte[1024];
intlen = is.read(bys); // 阻塞式方法
Stringstr = new String(bys, 0, len);
Stringip = s.getInetAddress().getHostAddress();
System.out.println(ip+ "---" + str);
//釋放資源
s.close();
//ss.close(); //這個不應該關閉
}
}
TCP傳送接收圖解: