Java Socket

来源:互联网 发布:python官网 中文版 编辑:程序博客网 时间:2024/06/16 17:51

Java 中的网络编程主要依靠Socket

TCP:

服务端ServerSocket注册端口port

ServerSocket serverSocket = new ServerSocket(7777);

然后通过accept()方法监听端口,发现请求则返回Socket

Socket socket = serverSocket.accept();

服务端的输出对应客户端的输入,输入对应客户端的输出

InputStream is = socket.getInputStream();

解析输入流得到客户端传递过来的内容

...

然后通过输出流把信息传递给客户端

OutputStream os = socket.getOutputStream();



客户端Socket,需要知道服务端的ip和port,当程序运行时,服务端通过serverSocket.accept()监听到请求,然后服务端生成一个socket同客户端绑定,用以通信

Socket socket = new Socket("localhost", 7777);

客户端的输出流对应服务端的输入流,输入流对应输出流

InputStream is = socket.getInputStream();

解析服务端传递过来的信息...

OutputStream os = socket.getOutputStream();

构建信息传递到服务端...




UDP:

服务端DatagramSocket注册端口port

DatagramSocket socket = new DatagramSocket(7777);

构建数据包:

byte[] buffer = new byte[1000];
DatagramPacket packet = new DatagramPacket(buffer, 1000);

通过socket.receive(packet)方法把接收客户端的信息传递到数据包里面

socket.receive(packet);
System.out.print(new String(buffer, 0, packet.getLength()));

构建数据包,数据包包含客户端发过来的ip地址,和客户端端口号

String str = "welcome";
DatagramPacket packet2 = new DatagramPacket(str.getBytes(), str.length(), packet.getAddress(), packet.getPort());

通过socket.send(packet2)方法把数据包发送到客户端


客户端DatagramSocket不需要注册端口

DatagramSocket socket = new DatagramSocket();

构建数据包,包含服务器目标地址和端口号

String str = "hello world";
DatagramPacket packet = new DatagramPacket(str.getBytes(), str.length(), InetAddress.getByName("localhost"), 7777);

发送

socket.send(packet);

构建数据包,用来接受服务器返回信息

byte[] buffer = new byte[1000];
DatagramPacket packet2 = new DatagramPacket(buffer, 100);
socket.receive(packet2);

0 0
原创粉丝点击