java中socket怎么使用

56次阅读
没有评论

共计 1681 个字符,预计需要花费 5 分钟才能阅读完成。

在 Java 中使用 Socket 进行网络通信可以分为服务端和客户端两部分。
服务端:

  1. 创建 ServerSocket 对象,并指定端口号。
  2. 调用 ServerSocket 的 accept() 方法接收客户端连接请求,返回一个 Socket 对象。
  3. 使用 Socket 对象的输入流和输出流进行数据的读取和写入。
  4. 通信完成后,关闭 Socket 对象和 ServerSocket 对象。

示例代码:

import java.io.*;
import java.net.*;
public class Server {public static void main(String[] args) {
try {
// 创建 ServerSocket 对象,并指定端口号
ServerSocket serverSocket = new ServerSocket(8888);
// 接收客户端连接请求,返回一个 Socket 对象
Socket socket = serverSocket.accept();
// 获取输入流和输出流
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
// 读取客户端发送的数据
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String data = reader.readLine();
System.out.println("Client:" + data);
// 向客户端发送数据
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os));
writer.write("Hello, client!\n");
writer.flush();
// 关闭流和 Socket 对象
reader.close();
writer.close();
is.close();
os.close();
socket.close();
serverSocket.close();} catch (IOException e) {e.printStackTrace();
}
}
}

客户端:

  1. 创建 Socket 对象,指定服务端的 IP 地址和端口号。
  2. 使用 Socket 对象的输入流和输出流进行数据的读取和写入。
  3. 通信完成后,关闭 Socket 对象。

示例代码:

import java.io.*;
import java.net.*;
public class Client {public static void main(String[] args) {
try {
// 创建 Socket 对象,指定服务端的 IP 地址和端口号
Socket socket = new Socket("127.0.0.1", 8888);
// 获取输入流和输出流
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
// 向服务端发送数据
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os));
writer.write("Hello, server!\n");
writer.flush();
// 读取服务端发送的数据
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String data = reader.readLine();
System.out.println("Server:" + data);
// 关闭流和 Socket 对象
writer.close();
reader.close();
is.close();
os.close();
socket.close();} catch (IOException e) {e.printStackTrace();
}
}
}

以上代码演示了一个简单的 Socket 通信过程,在实际应用中可能需要进行异常处理、循环读取数据等操作。

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-20发表,共计1681字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)