客戶端代碼:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class TcpClient {
public static void main(String[] args) {
// 聲明一個socket
Socket socket = null;
try {
String msg = null;
// 產生socket對象,制定服務器地址和服務器監聽的端口號
socket = new Socket("127.0.0.1", 8080);
// 從標準輸入(鍵盤)讀取內容,獲取socket的輸出流,將讀取到的內容放入輸出流中
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
OutputStream outputStream = socket.getOutputStream();
while (!(msg = reader.readLine()).equalsIgnoreCase("exit")) {
outputStream.write(msg.getBytes());
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
服務器端代碼:
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) {
// 聲明一個服務器端socket
ServerSocket serverSocket = null;
// 聲明一個socket來接受客戶端連接
Socket socket = null;
try {
int temp;
// 定義服務器端socket並指定監聽端口
serverSocket = new ServerSocket(8080);
// 調用阻塞式方法來獲取客戶端連接的socket
socket = serverSocket.accept();
// 獲取客戶端socket的輸入流
InputStream inputStream = socket.getInputStream();
// 讀取客戶端socket的輸入流的內容並輸出
byte[] buffer = new byte[512];
while ((temp = inputStream.read(buffer)) != -1) {
System.out.println(new String(buffer, 0, temp));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
socket.close();
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}