java网络编程

156 阅读2分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路.

在学习java网络编程前,需要有计算机网络和javaIO流的相关知识。 想简单学习IO流请点击我
这些内容是我在动力节点上学习的时候整理来的

  1. TCP通信概述
  2. 客户端要求和代码
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.Socket;
 ​
 public class TCPclient {
     public static void main(String[] args) throws IOException {
         // 1.创建一个客户端对象Socket,构造方法绑定服务器的IP地址和端口号
         Socket socket = new Socket("127.0.0.1", 8888);
 ​
         // 2.使用Socket对象中的方法getOutputStream()获取网络字节输出流outputStream对象
         OutputStream out = socket.getOutputStream();
 ​
         // 3.使用网络字节输出流outputstream对象中的方法write,给服务器发送数据
         out.write("发送给服务器的数据".getBytes());
 ​
         // 4.使用Socket对象中的方法getInputStream()获取网络字节输入流Inputstream对象
         InputStream in = socket.getInputStream();
 ​
         // 5.使用网络字节输入流InputStream对象中的方法read,读取服务器回写的数据
         byte[] bytes = new byte[1024];
         int len = in.read(bytes);
         System.out.println(new String(bytes, 0, len));
 ​
         // 6.释放资源(Socket)
         socket.close();
     }
 }
 ​
  1. 服务器端要求和代码 具体实现步骤请看如下代码:
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.ServerSocket;
 import java.net.Socket;
 ​
 public class TCPSever {
     public static void main(String[] args) throws IOException {
         // 1.创建服务器serversocket对象和系统要指定的端口号
         ServerSocket server = new ServerSocket(8888);
 ​
         // 2.使用ServerSocket对象中的方法accept,获取到请求的客户端对象Socket
         Socket socket = server.accept();
 ​
         // 3.使用Socket对象中的方法getInputStream()获取网络字节输入流工InputStream对象
         InputStream in = socket.getInputStream();
 ​
         // 4.使用网络字节输入流Inputstream对象中的方法read,读取客户端发送的数据
         byte[] bytes = new byte[1024];
         int len = in.read(bytes);
         System.out.println(new String(bytes, 0, len));
 ​
         // 5.使用Socket对象中的方法getoutputstream()获取网络字节输出流outputStream对象
         OutputStream outputStream = socket.getOutputStream();
 ​
         // 6.使用网络字节输出流outputStream对象中的方法write,给客户端回写数据
         outputStream.write("发送给客户端的数据".getBytes());
 ​
         // 7.释放资源(Socket, Serversocket)
         socket.close();
         server.close();
     }
 }
  1. 先运行服务器端的程序,在运行客户端的程序即可。
  2. 如果自己在写程序的过程中遇到了服务器端或客户端阻塞无法正常运行,请参考read方法阻塞的解决