客户端发送消息,服务端接收消息
客户端
public class Client {
public static void main(String[] args) {
//1.建立一个与服务端之间的连接
/*** 面向连接:三次握手
* 创建一个Socket的对象,就相当于完成了三次握手,建立了一个安全的连接
*/
/*** Socket(InetAddress address, int port) 创建一个流套接字并将其连接到指定 IP 地址的指定端口号。 */
//注意:包含了两个流:InputStream和OutputStream
Socket socket = null;
try {socket = new Socket(InetAddress.getByName("10.31.165.42"),7777);
//2.将需要发送的数据写入到网络中
/*** InputStream getInputStream()返回此套接字的输入流 。OutputStream getOutputStream()返回此套接字的输出流。
*/
//InputStream input = new BufferedInputStream(socket.getInputStream());
//InputStream input = socket.getInputStream();
OutputStream output = socket.getOutputStream();
//3.写入
output.write("hello你好吗?".getBytes());
output.flush();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
服务端
public class Server {
public static void main(String[] args) {
//1.实例化一个ServerSocket的对象
/*** ServerSocket(int port)
创建绑定到特定端口的服务器套接字。
*/
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(7777);
//2.监听,获取连接到的客户端
/**
* Socket accept()
侦听并接受到此套接字的连接。
*/
System.out.println("等待服务端的连接...");
//注意:在未连接成功之前,将一直处于阻塞状态
Socket socket = serverSocket.accept();
System.out.println("连接成功");
//3.获取网络到内存的一个输入流
InputStream input = socket.getInputStream();
//4.读取数据
byte[] arr = new byte[1024];
int len = input.read(arr);
String message = new String(arr, 0, len);
//5.组织信息
String ipString = socket.getInetAddress().getHostAddress();
int port = socket.getPort();
System.out.println(ipString +":" + port + "说你说:" + message);
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
客户端发送消息,服务端回复消息
客户端
public class Client {
public static void main(String[] args) {
// 1.建立一个与服务端之间的连接
/**
* 面向连接:三次握手 创建一个Socket的对象,就相当于完成了三次握手,建立了一个安全的连接
*/
// 注意:包含了两个流:InputStream和OutputStream
Socket socket = null;
try {
socket = new Socket(InetAddress.getByName("10.31.165.42"),7777);
// 2.将需要发送的数据写入到网络中
OutputStream output = socket.getOutputStream();
// 3.写入
output.write("hello你好吗?".getBytes());
output.flush();
// 4.收取服务端发送来的消息
InputStream input = socket.getInputStream();
byte[] arr = new byte[1024];
int len = input.read(arr);
String message = new String(arr, 0, len);
System.out.println("来自服务端的回复:" + message);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
服务端
public class Server {
public static void main(String[] args) {
//1.实例化一个ServerSocket的对象
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(7777);
//2.监听,获取连接到的客户端
System.out.println("等待服务端的连接...");
//注意:在未连接成功之前,将一直处于阻塞状态
Socket socket = serverSocket.accept();
System.out.println("连接成功");
//3.获取网络到内存的一个输入流
InputStream input = socket.getInputStream();
//4.读取数据
byte[] arr = new byte[1024];
int len = input.read(arr);
String message = new String(arr, 0, len);
//5.组织信息
String ipString = socket.getInetAddress().getHostAddress();
int port = socket.getPort();
System.out.println(ipString +":" + port + "说:" + message);
//6.服务端给客户端回复消息
OutputStream output = socket.getOutputStream();
output.write("你也好,好久不见了".getBytes());
output.flush();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}