MessageServer.java
MessageClient.java
package com.zyl;
import java.net.*;
import java.io.*;
/**
* 在10000端口下监听 网路上的应用程序连接 并发送字符串信息到网路客户端程序
*/
public class MessageServer {
public static void main(String[] args) throws Exception {
// 创建ServerSocket对象,在指定的int端口下监听
ServerSocket server = new ServerSocket(10000);
// 服务过程无限循环下去:
while (true) {
// 等待客户端程序的连接
System.out.println("等待连接");
// 如果没有连接,程序一直阻塞
Socket client = server.accept();
// 服务器首先在连接创建后向服务器发送消息
String message = "消息来自服务端";
// 打开网络输出流,准备写入内容
OutputStream output = client.getOutputStream();
// 使用包装类,包装outputStream
PrintWriter pw = new PrintWriter(new OutputStreamWriter(output));
// 输出字符串
pw.println(message);
pw.flush();
// 关闭打开的流
pw.close();
output.close();
// 结束会话
client.close();
}
}
}
MessageClient.java
package com.zyl;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class MessageClient {
public static void main(String[] args) throws IOException {
// 1 连接指定位置主机上的10000端口下的ServerSocket//立即请求连接
Socket server = new Socket("192.168.25.149",10000);
// 2 如果请求连接建立成功,才可以接收或者发送信息
String message = "";
// 保存接收的消息
// 3 打开输入流对象inputStream
InputStream input =server.getInputStream();
// 4 使用BufferedReader包装
BufferedReader bReader = new BufferedReader(new InputStreamReader(input));
// 如果读不到数据阻塞或者出现异常
message=bReader.readLine();
System.out.println("server:"+message);
// 5 关闭流释放资源
bReader.close();
input.close();
// 断开与服务器之间的会话
server.close();
}
}