更新时间:2022-06-06 10:36:51 来源:极悦 浏览1201次
Java Socket 编程用于在不同 JRE 上运行的应用程序之间进行通信。
Java Socket 编程可以是面向连接的或无连接的。
Socket 和 ServerSocket 类用于面向连接的套接字编程,DatagramSocket 和 DatagramPacket 类用于无连接的套接字编程。
套接字编程中的客户端必须知道两个信息:
1.服务器的 IP 地址,以及
2.端口号。
在这里,我们将进行单向的客户端和服务器通信。在此应用程序中,客户端向服务器发送消息,服务器读取消息并打印。这里使用了两个类:Socket 和 ServerSocket。Socket 类用于客户端和服务器之间的通信。通过这个类,我们可以读写消息。ServerSocket 类用于服务器端。ServerSocket 类的 accept() 方法会阻塞控制台,直到客户端连接。客户端连接成功后,返回服务端的Socket实例。
套接字只是机器之间通信的端点。Socket 类可用于创建套接字。
重要方法
方法 | 描述 |
---|---|
公共输入流 getInputStream() | 返回与此套接字连接的 InputStream。 |
公共输出流 getOutputStream() | 返回与此套接字连接的 OutputStream。 |
公共同步无效关闭() | 关闭此套接字 |
ServerSocket 类可用于创建服务器套接字。该对象用于建立与客户端的通信。
重要方法
方法 | 描述 |
---|---|
公共套接字接受() | 返回套接字并在服务器和客户端之间建立连接。 |
公共同步无效关闭() | 关闭服务器套接字。 |
创建服务器:
要创建服务器应用程序,我们需要创建 ServerSocket 类的实例。在这里,我们使用 6666 端口号进行客户端和服务器之间的通信。您也可以选择任何其他端口号。accept() 方法等待客户端。如果客户端使用给定的端口号连接,它会返回一个 Socket 实例。
ServerSocket ss=新的 ServerSocket(6666 );
套接字 s=ss.accept(); //建立连接并等待客户端
创建客户端:
要创建客户端应用程序,我们需要创建 Socket 类的实例。在这里,我们需要传递服务器的 IP 地址或主机名以及端口号。在这里,我们使用“localhost”,因为我们的服务器在同一系统上运行。
套接字 s=新 套接字(“本地主机” ,6666 );
让我们看一个简单的 Java 套接字编程,其中客户端发送文本,服务器接收并打印它。
文件:MyServer.java
导入 java.io.*;
导入 java.net.*;
公共类 MyServer {
公共静态无效 主要(字符串[]参数){
试试{
ServerSocket ss=新的 ServerSocket(6666 );
套接字 s=ss.accept(); //建立连接
DataInputStream dis= new DataInputStream(s.getInputStream());
字符串 str=(String)dis.readUTF();
System.out.println( "message=" +str);
ss.close();
}捕捉(异常 e){System.out.println(e);}
}
}
文件:MyClient.java
导入 java.io.*;
导入 java.net.*;
公共类 MyClient {
公共静态无效 主要(字符串[]参数){
试试{
套接字 s=新 套接字(“本地主机” ,6666 );
DataOutputStream dout= new DataOutputStream(s.getOutputStream());
dout.writeUTF( "你好服务器" );
dout.flush();
dout.close();
s.close();
}捕捉(异常 e){System.out.println(e);}
}
}
在此示例中,客户端将首先写入服务器,然后服务器将接收并打印文本。然后服务器将写入客户端,客户端将接收并打印文本。步骤继续。
文件:MyServer.java
导入 java.net.*;
导入 java.io.*;
类我的 服务器{
公共静态void main(String args[])抛出 异常{
ServerSocket ss=新的 ServerSocket(3333 );
套接字 s=ss.accept();
DataInputStream din= new DataInputStream(s.getInputStream());
DataOutputStream dout= new DataOutputStream(s.getOutputStream());
BufferedReader br= new BufferedReader( new InputStreamReader(System.in));
字符串 str= "" ,str2= "" ;
而(!str.equals(“停止” )){
str=din.readUTF();
System.out.println( "客户说:" +str);
str2=br.readLine();
dout.writeUTF(str2);
dout.flush();
}
din.close();
s.close();
ss.close();
}}
文件:MyClient.java
导入 java.net.*;
导入 java.io.*;
类我的 客户{
公共静态void main(String args[])抛出 异常{
套接字 s=新 套接字(“本地主机” ,3333 );
DataInputStream din= new DataInputStream(s.getInputStream());
DataOutputStream dout= new DataOutputStream(s.getOutputStream());
BufferedReader br= new BufferedReader( new InputStreamReader(System.in));
字符串 str= "" ,str2= "" ;
而(!str.equals(“停止” )){
str=br.readLine();
dout.writeUTF(str);
dout.flush();
str2=din.readUTF();
System.out.println( "服务器说:" +str2);
}
dout.close();
s.close();
}}
以上就是关于“Java socket编程详解”的介绍,大家如果想了解更多相关知识,不妨来关注一下极悦的Java视频教程,里面的课程内容由浅到深,通俗易懂,很适合没有基础的小伙伴学习,希望对大家能够有所帮助哦。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习