通过ServerSocket和Socket实现网络通信

在java中,要让程序之间建立起通信的通道,可以通过ServerSocket和Socket这两个类中的方法实现。
在通信中,有两个角色:服务器和客户机。等着被连接的叫做服务器,主动去连接的叫做客户机,在其他方面,两者都相同,也就是说,在两者建立好之后,后面的代码就可以仿照着写,因为最终是要实现数据的传输嘛,客户机能做的,服务器当然也要能做。
下面就从建立服务器和客户机,结合代码进行介绍
一、服务器
服务器的建立使用ServerSocket这个类,通过查看api文档,可以看到这个类有4种构造方法。
1⃣️ServerSocket();
2⃣️ServerSocket(int port) ;
3⃣️ServerSocket(int port, int backlog);
4⃣️ServerSocket(int port, int backlog, InetAddress bindAddr) ;
在这些构造方法中,port为服务器开放连接的端口号,backlog为客户连接数的最大值,bindAddr为服务器指定连接对象的ip地址。其中,通过无参构造方法创建的对象,还需要使用bind()方法与指定的端口绑定(或者说是开放指定的那一个端口),那么有人就会想了,既然后续还需要与端口绑定,为什么还要弄这样一个无参数的构造方法,直接使用带参的构造方法不是更便捷吗?其实不然,通过无参的构造方法,可以让服务器在开放通信端口之前,先设置一些ServerSocket的一些属性,因为一旦服务器开放端口之后,就无法在进行设置。

public class ServerSocketDemo{
   
	public static void mian(String[] args){
   
		try{
   
		ServerSocket ss = new ServerSocket(9999);//建立了一个开放9999端口的服务器
		//在前面说了,服务器是等着被连接的对象。那么,就需要使用accept()这个方法来获取连接服务器的客户机对象
		Socket client = ss.accept(
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,这是一个关于网络编程的技术问题,我可以回答。 Java SocketServerSocket 可以用于实现客户端服务端的网络通信。具体实现步骤如下: 1. 服务端创建 ServerSocket 对象,并指定一个端口号。用于监听客户端的连接请求。 2. 客户端创建 Socket 对象,并指定服务端的 IP 地址和端口号。用于发起连接请求。 3. 服务端使用 accept() 方法接收客户端连接并返回 Socket 对象。可以在循环中一直等待客户端的连接请求。 4. 服务端和客户端通过 InputStream 和 OutputStream 进行数据的读写。 下面是 Java 代码示例: 服务端代码: ``` try { // 创建 ServerSocket 对象 ServerSocket serverSocket = new ServerSocket(8888); while (true) { System.out.println("等待客户端连接..."); // 监听客户端的连接请求 Socket socket = serverSocket.accept(); System.out.println("客户端已连接:" + socket.getInetAddress().getHostName()); // 读取客户端发送过来的数据 InputStream inputStream = socket.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = bufferedReader.readLine()) != null) { System.out.println("客户端发送的数据:" + line); } // 向客户端发送数据 OutputStream outputStream = socket.getOutputStream(); PrintWriter printWriter = new PrintWriter(outputStream, true); printWriter.println("Hello, Client!"); // 关闭资源 bufferedReader.close(); inputStream.close(); printWriter.close(); outputStream.close(); socket.close(); } } catch (IOException e) { e.printStackTrace(); } ``` 客户端代码: ``` try { // 创建 Socket 对象 Socket socket = new Socket("192.168.0.1", 8888); // 向服务端发送数据 OutputStream outputStream = socket.getOutputStream(); PrintWriter printWriter = new PrintWriter(outputStream, true); printWriter.println("Hello, Server!"); // 读取服务端发送过来的数据 InputStream inputStream = socket.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = bufferedReader.readLine()) != null) { System.out.println("服务端发送的数据:" + line); } // 关闭资源 bufferedReader.close(); inputStream.close(); printWriter.close(); outputStream.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } ``` 以上便是使用 Java SocketServerSocket 实现客户端服务端网络通信的代码示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值