java socket网络编程实例_Java基础篇Socket网络编程中的应用实例
时间: 2024-03-15 17:46:16 浏览: 193
好的,我会尽力回答你关于Java Socket网络编程的问题。
Java Socket网络编程是Java语言中常用的网络通信技术之一,它可以实现客户端与服务端之间的通信,常用于开发网络应用程序、网络游戏等。下面我们来看一个基于Java Socket网络编程的应用实例。
假设我们有一个简单的聊天室应用程序,它由一个服务端和多个客户端组成。服务端负责接收客户端连接请求,并将客户端发送的消息广播给所有连接到服务端的客户端,客户端负责向服务端发送消息并接收来自服务端的消息。
1. 服务端实现
首先,我们需要编写服务端的代码。服务端需要监听指定的端口,等待客户端的连接请求,并在接收到连接请求时为每个客户端创建一个独立的线程进行处理。以下是服务端的代码示例:
```java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = null;
boolean listening = true;
try {
serverSocket = new ServerSocket(4444);
} catch (IOException e) {
System.err.println("Could not listen on port: 4444.");
System.exit(-1);
}
while (listening) {
new ServerThread(serverSocket.accept()).start();
}
serverSocket.close();
}
}
class ServerThread extends Thread {
private Socket socket = null;
public ServerThread(Socket socket) {
super("ServerThread");
this.socket = socket;
}
public void run() {
try {
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
out.println(inputLine);
}
out.close();
in.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
2. 客户端实现
接下来,我们需要编写客户端的代码。客户端需要连接到服务端指定的端口,并在连接成功后启动一个单独的线程用于接收来自服务端的消息。以下是客户端的代码示例:
```java
import java.io.*;
import java.net.*;
public class Client implements Runnable {
private static Socket socket = null;
public static void main(String[] args) throws IOException {
String hostName = "localhost";
int portNumber = 4444;
try {
socket = new Socket(hostName, portNumber);
} catch (UnknownHostException e) {
System.err.println("Don't know about host " + hostName);
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to " +
hostName);
System.exit(1);
}
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
new Thread(new Client()).start();
String userInput;
while ((userInput = stdIn.readLine()) != null) {
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println(userInput);
if (userInput.equals("exit")) {
break;
}
}
socket.close();
}
public void run() {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println("Server: " + inputLine);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
以上就是一个简单的基于Java Socket网络编程的聊天室应用程序的实现。在实际开发中,我们可以根据具体需求对代码进行修改和优化,使其更符合实际业务需求。
阅读全文