Java Socket编程:入门指南及示例
Java Socket编程是一种基于网络通信的编程方式,通过Socket可以实现两台计算机之间的数据传输和通信。在Java中,可以使用java.net包提供的Socket类和ServerSocket类来实现Socket编程。
在Socket编程中,一台计算机可以充当服务器,另一台计算机可以充当客户端。服务器通过ServerSocket类监听指定的端口,等待客户端的连接请求。当客户端发起连接请求时,服务器接受连接请求并创建一个Socket对象来与客户端进行通信。
客户端通过Socket类连接服务器的IP地址和端口号,与服务器建立连接后可以通过输入输出流进行数据的发送和接收。
Socket编程可以用于实现各种网络应用,包括Web服务器、聊天程序、文件传输等。它可以在局域网或广域网中进行通信,并且支持TCP和UDP两种传输协议。
以下是一个简单的Java Socket编程示例,演示了一个简单的客户端和服务器的通信过程:
服务器端代码:
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(8080);
} catch (IOException e) {
System.err.println('Could not listen on port: 8080.');
System.exit(1);
}
Socket clientSocket = null;
try {
clientSocket = serverSocket.accept();
} catch (IOException e) {
System.err.println('Accept failed.');
System.exit(1);
}
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine, outputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println('Received: ' + inputLine);
outputLine = 'Server response: ' + inputLine;
out.println(outputLine);
if (outputLine.equals('Bye.'))
break;
}
out.close();
in.close();
clientSocket.close();
serverSocket.close();
}
}
客户端代码:
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
socket = new Socket('localhost', 8080);
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println('Unknown host: localhost.');
System.exit(1);
} catch (IOException e) {
System.err.println('Couldn't get I/O for the connection to: localhost.');
System.exit(1);
}
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
System.out.println('Server response: ' + in.readLine());
if (userInput.equals('Bye.'))
break;
}
out.close();
in.close();
stdIn.close();
socket.close();
}
}
上述示例中,Server类充当服务器端,Client类充当客户端。服务器监听8080端口,客户端连接到localhost的8080端口。客户端通过控制台输入向服务器发送消息,服务器接收到消息后返回相同的消息加上'Server response: '前缀。当客户端输入'Bye.'时,通信结束。
以上是一个简单的Java Socket编程示例,通过这种方式可以实现更复杂的网络应用程序。
原文地址: https://www.cveoy.top/t/topic/pilV 著作权归作者所有。请勿转载和采集!