Java网络编程:Socket通信实例分析
Java网络编程中,Socket
通信是一种常见的网络通信方式。Socket
是网络通信的端点,它允许程序之间进行双向通信。Java提供了java.net
包来支持网络编程,其中Socket
类用于创建客户端,而ServerSocket
类用于创建服务器端。
下面是一个简单的Java Socket
通信实例,包括服务器端和客户端的代码。
服务器端代码(Server.java)
```javaimport java.io.;
import java.net.;
public class Server {
public static void main(String[] args) {
try {
// 创建服务器端的ServerSocket,监听端口号1234ServerSocket serverSocket = new ServerSocket(1234);
System.out.println(“Server is running and waiting for client connection…”);
//服务器无限循环,等待客户端连接 while (true) {
//等待接受客户端的连接,此方法会阻塞,直到一个连接建立Socket socket = serverSocket.accept();
System.out.println(“Client connected.”);
// 获取输入流,用于接收客户端发送的数据 BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// 获取输出流,用于向客户端发送数据 PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
//读取客户端发送的消息String inputLine = in.readLine();
System.out.println(“Client says: “ + inputLine);
//向客户端发送消息out.println(“Hello, “ + inputLine);
// 关闭连接 socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```###客户端代码(Client.java)
```javaimport java.io.;
import java.net.;
public class Client {
public static void main(String[] args) {
try {
// 创建客户端的Socket,连接到服务器的IP地址和端口号Socket socket = new Socket(“127.0.0.1”,1234);
System.out.println(“Connected to server.”);
// 获取输出流,用于向服务器发送数据 PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
// 获取输入流,用于接收服务器发送的数据 BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//向服务器发送消息out.println(“Hello Server!”);
//读取服务器的响应String fromServer = in.readLine();
System.out.println(“Server says: “ + fromServer);
// 关闭连接 socket.close();
} catch (UnknownHostException e) {
System.err.println(“Don’t know about host “ + “127.0.0.1”);
e.printStackTrace();
} catch (IOException e) {
System.err.println(“Couldn’t get I/O for the connection to “ + “127.0.0.1”);
e.printStackTrace();
}
}
}
```###运行步骤1.首先运行服务器端代码(Server.java),它会在指定端口上监听客户端的连接。
2.然后运行客户端代码(Client.java),它会连接到服务器并发送消息。
3.服务器接收到消息后,会打印出来并回复客户端。
4.客户端接收到服务器的回复后,会打印出来。
这个例子展示了最基本的Socket
通信流程。在实际应用中,你可能需要处理更复杂的数据传输、错误处理、多线程等高级特性。
还没有评论,来说两句吧...