当前位置:网站首页 > Java基础 > 正文

java的tcp基础



TCP传输(传输控制协议):TCP协议是一种面向连接的,可靠的字节流服务。当客户端和服务器端彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能进行数据的传输。它将一台主机发出的字节流无差错的发送到互联网的其它主机。在发送端负责把上层传下来的字节流分成报文段传递给下层。在接收端负责把报文重组后交给上层。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

服务端:

package cn.itcast.net.p4.tcp; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class ServerDemo { / * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // 服务端接收客户端发送过来的数据,并打印在控制台上。  /* * 建立tcp服务端的思路: * 1,创建服务端socket服务。通过ServerSocket对象。 * 2,服务端必须对外提供一个端口,否则客户端无法连接。 * 3,获取连接过来的客户端对象。 * 4,通过客户端对象获取socket流读取客户端发来的数据 * 并打印在控制台上。 * 5,关闭资源。关客户端,关服务端。 */ //1创建服务端对象。 ServerSocket ss = new ServerSocket(10002); //2,获取连接过来的客户端对象。 Socket s = ss.accept();//阻塞式.  String ip = s.getInetAddress().getHostAddress(); //3,通过socket对象获取输入流,要读取客户端发来的数据 InputStream in = s.getInputStream(); byte[] buf = new byte[1024]; int len = in.read(buf); String text = new String(buf,0,len); System.out.println(ip+":"+text); s.close(); ss.close(); } }

客户端:

import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; public class ClientDemo { / * @param args * @throws IOException * @throws UnknownHostException */ public static void main(String[] args) throws UnknownHostException, IOException { //客户端发数据到服务端 /* * Tcp传输,客户端建立的过程。 * 1,创建tcp客户端socket服务。使用的是Socket对象。 * 建议该对象一创建就明确目的地。要连接的主机。 * 2,如果连接建立成功,说明数据传输通道已建立。 * 该通道就是socket流 ,是底层建立好的。 既然是流,说明这里既有输入,又有输出。 * 想要输入或者输出流对象,可以找Socket来获取。 * 可以通过getOutputStream(),和getInputStream()来获取两个字节流。 * 3,使用输出流,将数据写出。 * 4,关闭资源。 */ //创建客户端socket服务。 Socket socket = new Socket("192.168.1.101",10002); //获取socket流中的输出流。  OutputStream out = socket.getOutputStream(); //使用输出流将指定的数据写出去。 out.write("tcp演示:哥们又来了!".getBytes()); //关闭资源。  socket.close(); } }

输出:192.168.1.101:tcp演示:哥们又来了!


服务端收到客户端的数据后返回给客户端一个信息:

package cn.itcast.net.p4.tcp; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class ServerDemo2 { / * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // 服务端接收客户端发送过来的数据,并打印在控制台上。  /* * 建立tcp服务端的思路: * 1,创建服务端socket服务。通过ServerSocket对象。 * 2,服务端必须对外提供一个端口,否则客户端无法连接。 * 3,获取连接过来的客户端对象。 * 4,通过客户端对象获取socket流读取客户端发来的数据 * 并打印在控制台上。 * 5,关闭资源。关客户端,关服务端。 */ //1创建服务端对象。 ServerSocket ss = new ServerSocket(10002); //2,获取连接过来的客户端对象。 Socket s = ss.accept(); String ip = s.getInetAddress().getHostAddress(); //3,通过socket对象获取输入流,要读取客户端发来的数据 InputStream in = s.getInputStream(); byte[] buf = new byte[1024]; int len = in.read(buf); String text = new String(buf,0,len); System.out.println(ip+":"+text); //使用客户端socket对象的输出流给客户端返回数据 OutputStream out = s.getOutputStream(); out.write("收到客户端发送给我的信息".getBytes()); s.close(); ss.close(); } }

客户端:

package cn.itcast.net.p4.tcp; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException;java的tcp基础 public class ClientDemo2 { / * @param args * @throws IOException * @throws UnknownHostException */ public static void main(String[] args) throws UnknownHostException, IOException { //客户端发数据到服务端 /* * Tcp传输,客户端建立的过程。 * 1,创建tcp客户端socket服务。使用的是Socket对象。 * 建议该对象一创建就明确目的地。要连接的主机。 * 2,如果连接建立成功,说明数据传输通道已建立。 * 该通道就是socket流 ,是底层建立好的。 既然是流,说明这里既有输入,又有输出。 * 想要输入或者输出流对象,可以找Socket来获取。 * 可以通过getOutputStream(),和getInputStream()来获取两个字节流。 * 3,使用输出流,将数据写出。 * 4,关闭资源。 */ Socket socket = new Socket("192.168.1.101",10002); OutputStream out = socket.getOutputStream(); out.write("tcp演示:哥们又来了!".getBytes()); //读取服务端返回的数据,使用socket读取流。  InputStream in = socket.getInputStream(); byte[] buf = new byte[1024]; int len = in.read(buf); String text = new String(buf,0,len); System.out.println(text); //关闭资源。  socket.close(); } }

结果:

收到客户端发送给我的信息



  • 上一篇: java平台的基础
  • 下一篇: java基础设计黑马
  • 版权声明


    相关文章:

  • java平台的基础2025-05-03 08:02:04
  • 去哪里找java基础题2025-05-03 08:02:04
  • java语法基础1292025-05-03 08:02:04
  • 基础java函数2025-05-03 08:02:04
  • 基础学java2025-05-03 08:02:04
  • java基础设计黑马2025-05-03 08:02:04
  • java基础进阶书籍2025-05-03 08:02:04
  • 每次面试问java基础2025-05-03 08:02:04
  • java基础学完后2025-05-03 08:02:04
  • java网页入门基础2025-05-03 08:02:04