W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
TCP實現(xiàn)服務(wù)端和客戶端簡單的通訊: 服務(wù)端接收到客戶端的連接后向客戶端發(fā)送字符串,客戶端接收字符串并打印。
1.http是應(yīng)用層協(xié)議,其底層傳輸協(xié)議是tcp協(xié)議,因此tcp服務(wù)端可以通過瀏覽器訪問。但如果使用瀏覽器訪問服務(wù)器http://localhost:8888時,會發(fā)生錯誤,這是因為http包裝了TCP協(xié)議。
2.與UDP不同的是客戶端使用的端口系統(tǒng)自動分配。
3.Socket是服務(wù)端和客戶端建立的管道,可以將管道看成中介者,服務(wù)端和客戶端都是和中介者打交道,不直接和對方打交道,這樣實現(xiàn)了訪問方式的統(tǒng)一。
1.服務(wù)端:
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 1.創(chuàng)建服務(wù)器 指定端口new ServerSocket(int port)
* 2.接受客戶端連接 阻塞式
* 3.發(fā)送數(shù)據(jù)
*/
public class MyServer {
public static void main(String[] args) throws IOException {
//1.創(chuàng)建服務(wù)器 指定端口new ServerSocket(int port)
ServerSocket server = new ServerSocket(8888);
//2.接受客戶端連接 阻塞式
Socket socket = server.accept();
System.out.println("一個客戶建立連接。");
//3.發(fā)送數(shù)據(jù)
/*BufferedWriter bWriter = new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream()));
bWriter.write("hello你好!");
bWriter.newLine();
bWriter.flush();*/
//另一種方式發(fā)送數(shù)據(jù):
DataOutputStream dStream = new DataOutputStream(socket.getOutputStream());
dStream.writeUTF("hello你好!");
dStream.flush();
//4.關(guān)閉
// bWriter.close();
dStream.close();
socket.close();
server.close();
}
}
2.客戶端:
import java.io.DataInputStream;
import java.io.IOException;
import java.net.Socket;
/**
* 1.創(chuàng)建客戶端 必須指定服務(wù)器+端口 此時就會連接
* 2.讀取數(shù)據(jù)
*/
public class MyClient {
public static void main(String[] args) throws IOException {
//1.創(chuàng)建客戶端 必須指定服務(wù)器+端口 此時就會連接
Socket client = new Socket("localhost", 8888);
//2.讀取數(shù)據(jù)
/*BufferedReader bReader = new BufferedReader(
new InputStreamReader(client.getInputStream()));
//注意:bReader.readLine()需要行的結(jié)束符,如:"\r\n",
//也可以通過bWriter.newLine();創(chuàng)建行的結(jié)束符。
System.out.println(bReader.readLine());*/
//另一種讀取數(shù)據(jù)方式:
DataInputStream dStream = new DataInputStream(client.getInputStream());
System.out.println(dStream.readUTF());
//3.關(guān)閉
// bReader.close();
dStream.close();
client.close();
}
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: