Java Socket 编程是Java网络编程的基础,它允许两台计算机通过网络进行通信。Socket是TCP/IP协议族的一部分,提供了在网络中建立、管理和维护通信连接的接口。在Java中,Socket编程涉及到的主要类和接口存在于`java.net`包中。 1. **ServerSocket**:在服务器端,你需要创建一个`ServerSocket`实例来监听特定端口上的连接请求。例如,`new ServerSocket(6789)`会打开6789端口,等待客户端的连接。端口号的选择需要避免使用0-1023的保留端口,并确保在同一台机器上没有其他程序占用相同的端口。 2. **Socket**:客户端通过创建`Socket`实例来建立与服务器的连接。例如,`new Socket(InetAddress.getLocalHost(), 5678)`连接到本地主机的5678端口。`InetAddress`类用于获取IP地址和主机名,可以通过`getLocalHost()`获取本地主机的IP地址,或者通过`getByName(String hostName)`或`getByAddress(byte[] ipAddr)`方法获取指定主机名或IP地址的`InetAddress`对象。 3. **IO操作**:一旦建立了Socket连接,数据传输主要依赖于Java的IO流。通常使用`InputStream`和`OutputStream`来读取和写入原始字节数据,而在处理文本时,可以将它们转换为`Reader`和`Writer`。例如,`BufferedReader`和`PrintWriter`用于提高效率和方便性,分别用于读取和写入文本数据。`Socket`提供了`getInputStream()`和`getOutputStream()`方法,分别返回用于读取和写入的字节流。 4. **简单Socket程序示例**: - 服务器端(MyServer): ```java import java.io.*; import java.net.*; public class MyServer { public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(5678); while (true) { Socket client = server.accept(); BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())); PrintWriter out = new PrintWriter(client.getOutputStream()); String str; while ((str = in.readLine()) != null) { System.out.println("Received: " + str); out.println("Echo: " + str); } out.close(); client.close(); } } } ``` - 客户端: ```java import java.io.*; import java.net.*; public class MyClient { public static void main(String[] args) throws IOException { Socket socket = new Socket("localhost", 5678); PrintWriter out = new PrintWriter(socket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out.println("Hello, Server!"); String response = in.readLine(); System.out.println("Server replied: " + response); socket.close(); } } ``` 在这个简单的示例中,服务器等待连接,接收客户端发送的行,打印出来并回显,直到连接关闭。客户端连接到服务器,发送一行文本,接收服务器的响应并打印出来,然后关闭连接。 5. **异常处理**:在实际编程中,务必处理可能抛出的异常,如`IOException`,确保程序的健壮性。 Java Socket编程提供了基础但强大的功能,使得开发者可以构建复杂的网络应用程序,如聊天室、文件传输、在线游戏等。理解Socket的工作原理和使用方法是成为一名合格的Java网络程序员的关键步骤。
剩余9页未读,继续阅读
- 粉丝: 361
- 资源: 30
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助