Java Socket 源代码:建立可靠的网络连接164
在 Java 中,Socket 类提供了建立可靠的网络连接的基础。它允许两台计算机在网络上进行双向通信,从而实现各种网络应用程序和服务的构建。
Socket 类概述
Socket 类代表网络中的端点,具有以下关键属性:
IP 地址:与 Socket 关联的远程计算机或服务器的 IP 地址。
端口号:用于识别特定应用程序或服务的端口号。
套接字类型:定义套接字类型的常量,如流套接字 (SOCK_STREAM) 或数据报套接字 (SOCK_DGRAM)。
建立 Socket 连接
要建立 Socket 连接,需要执行以下步骤:
创建 Socket 对象,指定要连接的 IP 地址和端口号。
使用 connect() 方法连接到远程主机,建立 TCP 握手。
一旦连接建立,就可以使用 Socket 对象进行数据传输。
数据传输
通过 Socket 连接建立后,可以使用以下方法进行数据传输:
OutputStream:用于向远程主机写入数据。
InputStream:用于从远程主机读取数据。
关闭 Socket 连接
在数据传输完成后,应通过调用 close() 方法关闭 Socket 连接。这将释放系统资源并中断与远程主机的连接。
示例代码
以下代码示例演示如何使用 Java Socket 类在服务器和客户端之间建立连接并交换数据:
服务器代码:
import ;
import ;
import ;
import ;
public class Server {
public static void main(String[] args) throws Exception {
int port = 5000;
ServerSocket serverSocket = new ServerSocket(port);
("Server listening on port " + port);
while (true) {
Socket clientSocket = ();
("Client connected: " + ());
// Read data from client
InputStream inputStream = ();
byte[] data = new byte[1024];
int numBytesRead = (data);
// Write data back to client
OutputStream outputStream = ();
(data, 0, numBytesRead);
();
}
}
}
客户端代码:
import ;
import ;
import ;
public class Client {
public static void main(String[] args) throws Exception {
String host = "localhost";
int port = 5000;
Socket clientSocket = new Socket(host, port);
// Send data to server
OutputStream outputStream = ();
("Hello from client!".getBytes());
// Read data from server
InputStream inputStream = ();
byte[] data = new byte[1024];
int numBytesRead = (data);
("Received from server: " + new String(data, 0, numBytesRead));
();
}
}
Java Socket 类提供了建立可靠网络连接的强大机制。通过理解其工作原理和使用示例代码,开发者可以利用 Socket 类构建各种网络应用程序和服务。
2024-11-13
上一篇:Java 中的字符串拼接最佳实践
下一篇:Java 代码异常处理的全面指南
Java方法栈日志的艺术:从错误定位到性能优化的深度指南
https://www.shuihudhg.cn/133725.html
PHP 获取本机端口的全面指南:实践与技巧
https://www.shuihudhg.cn/133724.html
Python内置函数:从核心原理到高级应用,精通Python编程的基石
https://www.shuihudhg.cn/133723.html
Java Stream转数组:从基础到高级,掌握高性能数据转换的艺术
https://www.shuihudhg.cn/133722.html
深入解析:基于Java数组构建简易ATM机系统,从原理到代码实践
https://www.shuihudhg.cn/133721.html
热门文章
Java中数组赋值的全面指南
https://www.shuihudhg.cn/207.html
JavaScript 与 Java:二者有何异同?
https://www.shuihudhg.cn/6764.html
判断 Java 字符串中是否包含特定子字符串
https://www.shuihudhg.cn/3551.html
Java 字符串的切割:分而治之
https://www.shuihudhg.cn/6220.html
Java 输入代码:全面指南
https://www.shuihudhg.cn/1064.html