要求:客户端向服务端发送一串文字,服务端接受等待客户端的连接,连接成功之后接受客户端传输过来的信息,并将信息打印在控制台上
服务端
public void server(){
ServerSocket serverSocket = null;
InputStream inputStream = null;
try{
// 创建一个服务端的 socket
serverSocket = new ServerSocket(8888);
// 接受一个客户端的连接
Socket clientSocket = serverSocket.accept();
// 获得客户端传入过来的文字的输入流
inputStream = clientSocket.getInputStream();
// 把输入流写到 buffer 中
byte[] buffer = new byte[1024];
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int len;
while((len = inputStream.read(buffer)) != -1){
byteArrayOutputStream.write(buffer,0,len);
}
System.out.println(byteArrayOutputStream);
}catch (IOException e){
e.printStackTrace();
}finally {
// 对需要关闭的连接资源进行手动关闭
//noinspection DuplicatedCode
if(serverSocket != null){
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(inputStream != null){
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
客户端
public void client(){
Socket socket = null;
OutputStream outputStream = null;
String str = "你好,服务端。我是客户端";
try{
// 创建一个 ip 地址对象
InetAddress ip = InetAddress.getByName("127.0.0.1");
// 创建一个客户端 socket
socket = new Socket(ip,8888);
// 创建一个输出流,用于数据的传出
outputStream = socket.getOutputStream();
outputStream.write(str.getBytes());
}catch (IOException e){
e.printStackTrace();
}finally {
// 对必要的连接进行手动关闭释放
if(socket != null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(outputStream != null){
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
运行
1、先启动服务端等待客户端的连接
2、启动服务端向客户端发送数据
3、服务端接受到数据并打印出来