基於TCP的Socket傳輸
Tips:先有服務端,後有客戶端
客戶端與服務端傳輸的流程
socket是服務端與客戶端傳輸的關鍵
步驟
1、服務端暴露自己的端口號
2、客戶端通過服務端暴露的端口號,使用本機的 ip 地址訪問服務端
3、服務端通過accept()監聽客戶端是否訪問
傳輸信息
OuputStream 輸出流發送消息
out.write(…) 發送的消息
InputStream 輸入流接受消息
in.read(…) 接受的消息存於…
代碼
服務端
package com.yanqun.socket;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String [] args) throws IOException {
ServerSocket server = new ServerSocket(9999);//綁定端口號9999,暴露服務
//監聽客戶端是否發來連接
Socket socket = server.accept();
// System.out.println("服務端與客戶端連接成功");
//給客戶端發送消息
OutputStream out = socket.getOutputStream();
out.write("hello".getBytes());
//接受客戶端的消息
byte[] bs = new byte[100];
InputStream in = socket.getInputStream();
in.read(bs);
System.out.println("客戶端反饋的消息爲:" + new String(bs));
in.close();
out.close();
socket.close();
server.close();
}
}
客戶端
package com.yanqun.socket;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class client {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket client = new Socket("127.0.0.1",9999);//本機ip地址鏈接端口號爲9999的服務端
//接受服務端的消息
InputStream in = client.getInputStream();
byte[] bs = new byte[100];
in.read(bs);
System.out.println("從服務端發送過來的消息爲:" + new String(bs));
//給服務端做出反饋
OutputStream out = client.getOutputStream();
out.write("world".getBytes());
out.close();
in.close();
client.close();
}
}
運行
1、先運行服務端
2、再運行客戶端
String於byte[]的轉換
1、String 轉 byte[] 的方法: 字符串 . getBytes()
2、byte[] 轉 String 的方法 : new String(…)