下面就是关于“Java Socket编程(二) Java面向连接的类”的完整攻略。
一、什么是面向连接的Socket
在Socket编程中,TCP协议是面向连接的协议,UDP协议是无连接的协议。面向连接的Socket需要先建立连接,数据传输完毕后还需要断开连接。
在Java中,面向连接的Socket通信使用的是java.net.Socket
类和java.net.ServerSocket
类。其中,Socket
类代表客户端套接字,ServerSocket
类代表服务器套接字。需要注意的是,ServerSocket
只负责监听端口并等待客户端连接,一旦有客户端连接,就会创建一个新的Socket
实例与客户端通信。
二、Socket步骤详解
- 创建ServerSocket对象并绑定端口
java
ServerSocket serverSocket = new ServerSocket(port);
其中,port
是要绑定的端口号。
- 调用accept()方法并等待客户端连接
java
Socket socket = serverSocket.accept();
这会阻塞当前线程,直到有客户端连接或者发生异常。
- 获取客户端输入输出流,进行数据传输
java
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
利用输入输出流进行数据的读取和写入。
- 断开连接
java
socket.close();
serverSocket.close();
数据传输完毕后要断开连接,先关闭Socket
,再关闭ServerSocket
。
三、Socket示例说明
示例一:简单的Socket服务器
下面是一个简单的Socket服务器示例,它监听端口8888
,当有客户端连接时,向客户端发送消息Hello World!
,并断开连接。
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8888);
Socket socket = serverSocket.accept();
OutputStream out = socket.getOutputStream();
out.write("Hello World!".getBytes());
out.flush();
socket.close();
serverSocket.close();
}
}
示例二:简单的Socket客户端
下面是一个简单的Socket客户端示例,它连接到localhost
的端口8888
,读取服务器发送的消息并打印,然后断开连接。
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 8888);
InputStream in = socket.getInputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) != -1) {
System.out.println(new String(buffer, 0, len));
}
socket.close();
}
}
四、总结
本文详细讲解了Java面向连接的Socket编程,包括Socket步骤和两个示例说明。希望能够帮助大家理解Socket编程的基本概念和实现方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Socket编程(二) Java面向连接的类 - Python技术站