发表时间:2022-03-25来源:网络
服务器端
package socket_demo; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class server { public static void main(String[] args) throws Exception { // 监听指定的端口,阻塞直至客户端连接此端口 int port = 23333; ServerSocket server = new ServerSocket(port); System.out.println("server is waiting..."); Socket socket = server.accept(); System.out.println("Connected!"); // 读取从客户端返回的输入流,至尾端时返回-1 InputStream input = socket.getInputStream(); byte[] bytes = new byte[1024]; int len; StringBuilder get = new StringBuilder(); while ((len = input.read(bytes)) != -1) { get.append(new String(bytes, 0, len, "UTF-8")); } System.out.println("get message from client: " + get); OutputStream output = socket.getOutputStream(); String sent = "Hi there"; output.write(sent.getBytes("UTF-8")); System.out.println("sent message to client: " + sent); // 关闭socket与服务器端 input.close(); output.close(); socket.close(); server.close(); } }
客户端
服务器端
客户端
以上代码用到的JAVA SOCKET API主要有:
Socket(InetAddress address, int port) --创建一个流套接字并将其连接到指定的IP地址与指定端口
ServerSocket(int port)--服务器端绑定一个窗口
server.accept()--服务器端等待连接(持续阻塞)
socket.getInputStream()--返回此套接字的输入流
socket.getOutputStream()--返回此套接字的输出流
socket.close()--关闭此套接字
JAVA中方法的实现都要通过JVM翻译给系统执行,所以JAVA SOCKET API与系统(本例为windows)SOCKET API有着对应关系。
我们通过在IDEA中使用Ctrl+Alt+H与Ctrl+Alt+B跟踪查看api的调用栈,以server.accept()为例
双击右边函数名,查看其调用,进一步查看ServerSocket.implAccept(Socket)





这里accept0()是一个native api,无法再继续上溯
完整的调用栈为server.accept()->ServerSocket.implAccept(Socket) (java.net)->SocketImpl.accept(SocketImpl)
->AbstractPlainSocketImpl.socketAccept(SocketImpl)->PlainSocketImpl.accept0(int, InetSocketAddress[])
综上,java socket中的server.accept()对应windows socket中的accept0(int var0, InetSocketAddress[] var1)
其它socket api也都有着类似的对应关系,通过查看调用栈可以一一查找,这里不再赘述
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
粤语翻译帮app下载v1.1.1 安卓版
60.01MB |生活服务
人生笔记app官方版下载v1.19.4 安卓版
125.88MB |系统工具
萝卜笔记app下载v1.1.6 安卓版
46.29MB |生活服务
贯联商户端app下载v6.1.8 安卓版
12.54MB |商务办公
jotmo笔记app下载v2.30.0 安卓版
50.06MB |系统工具
鑫钜出行共享汽车app下载v1.5.2
44.7M |生活服务
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-02-14