java实现server/client通信
服务器端实现
ServerSocket serverSocket = null;
InputStream inputStream = null;
OutputStream outputStream = null;
try {
//创建服务端
serverSocket = new ServerSocket(8099);
//保持服务器端一直运行
while (true){
System.out.println("waiting for connect");
//接受的客户端socket
Socket socket = serverSocket.accept();
//以字节输入流的方式将接受的socket内容读取
inputStream = socket.getInputStream();
//创建接受字节流容器
byte[] bytes = new byte[1024];
//将socket中的字节流信息读取进准备好的字节容器
int readlen = inputStream.read(bytes);
//将服务器当前时间发送回链接的客户端
outputStream = socket.getOutputStream();
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
String str = simpleDateFormat.format(date);
System.out.println(str);
outputStream.write(str.getBytes());
//将接受的字节流通过字符串的方式打印
System.out.println(new String(bytes,0,readlen));
}
} catch (IOException e) {
e.printStackTrace();
}finally {
//关闭服务端
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
if (inputStream != null){
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (outputStream != null){
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端实现
//创建客户端socket
Socket socket = new Socket();
//客户端连接至服务端
socket.connect(new InetSocketAddress("127.0.0.1",8099));
//以输出字节流的方式将本地数据输出至socket中
OutputStream outputStream = socket.getOutputStream();
// System.out.println(outputStream.getClass().getName());
//要发送的字符串信息
String str = "hello world";
//将字符串转化成字节流用outputstream进行输出
outputStream.write(str.getBytes());
InputStream inputStream = socket.getInputStream();
byte[] bytes = new byte[1024];
int readlen = inputStream.read(bytes);
System.out.println(new String(bytes,0,readlen));
if (outputStream != null){
outputStream.close();
}
if (inputStream != null){
inputStream.close();
}
socket.close();
结果:
服务端收到客户端数据并发送本地时间
客户端发送数据并收到客户端时间数据