一、Socket概要
??Java的網(wǎng)絡(luò)編程主要涉及到的內(nèi)容是Socket編程,那么什么是Socket呢?簡單地說,Socket,套接字,就是兩臺主機之間邏輯連接的端點(由IP地址、TCP/IP協(xié)議、端口號組成)。Socket,本質(zhì)上就是一組接口,是對TCP/IP協(xié)議的封裝和應(yīng)用(程序員層面上)。
??TCP/IP協(xié)議組可以分為四個層次:
????應(yīng)用層: HTTP協(xié)議、FTP協(xié)議
????傳輸層: TCP協(xié)議(面向有連接)、UDP協(xié)議(面向無連接)
????網(wǎng)絡(luò)層: IP協(xié)議、ICMP協(xié)議
????網(wǎng)絡(luò)接口層: 設(shè)備接口程序
二、案例
??(1)客戶端:
import java.io.OutputStream;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws Exception{
// 要連接的服務(wù)端IP地址和端口
String host = "127.0.0.1";
int port = 55533;
// 與服務(wù)端建立連接
Socket socket = new Socket(host, port);
// 建立連接后獲得輸出流
OutputStream outputStream = socket.getOutputStream();
String message="Hello Server I'm Client!";
socket.getOutputStream().write(message.getBytes("UTF-8"));
outputStream.close();
socket.close();
}
}
??(1)服務(wù)器端:
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws Exception{
// 監(jiān)聽指定的端口
int port = 55533;
ServerSocket server = new ServerSocket(port);
// server將一直等待連接的到來
Socket socket = server.accept();
// 建立好連接后,從socket中獲取輸入流,并建立緩沖區(qū)進行讀取
InputStream inputStream = socket.getInputStream();
byte[] bytes = new byte[1024];
int len;
StringBuilder sb = new StringBuilder();
while ((len = inputStream.read(bytes)) != -1) {
sb.append(new String(bytes, 0, len,"UTF-8"));
}
System.out.println("接收到客戶端消息:" + sb);
inputStream.close();
socket.close();
server.close();
}
}