Maison  >  Article  >  Java  >  Explication détaillée des exemples de codes client et serveur pour simuler la transmission TCP en Java

Explication détaillée des exemples de codes client et serveur pour simuler la transmission TCP en Java

黄舟
黄舟original
2017-03-28 10:19:271474parcourir

Cet article présente principalement les informations pertinentes sur les exemples client et serveur de simulation de transmission TCP en Java. Les amis dans le besoin peuvent s'y référer

Créer un client pour la transmission TCP.

1. Pour établir le service Socket du client TCP, l'objet Socket est recommandé que la destination soit claire dès la création de l'objet, c'est-à-dire le. hôte à connecter ;

2. Si la connexion est établie avec succès, cela signifie que le canal de transmission de données a été établi. Ce canal est le flux Socket, qui est établi par la couche inférieure. c'est un flux, cela signifie qu'il y a à la fois des flux d'entrée et des flux de sortie. Si vous souhaitez entrer, l'objet flux ou flux de sortie peut être obtenu via Socket, et peut être obtenu via getOutputStream() et getInputStream();

3. Utilisez le flux de sortie pour écrire les données


4.

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;

public class Client {
  public static void main(String[] args) throws IOException {

    // 1、创建客户端的Socket服务
    Socket socket = new Socket("192.168.1.100", 10002);

    // 2、获取Socket流中输入流
    OutputStream out = socket.getOutputStream();

    // 3、使用输出流将指定的数据写出去
    out.write("TCP is coming !".getBytes());

    // 4、关闭Socket服务
    socket.close();
  }
}

2. Créez un serveur pour la transmission TCP

1. Établissez un service Socket pour le serveur TCP via l'objet ServerSocket ;

2. Le serveur doit fournir un port vers le monde extérieur, sinon le client ne peut pas se connecter

3. Obtenez l'objet client connecté ; Via l'objet End du client pour obtenir le flux Socket et lire les données envoyées par le client

5. Fermez la ressource, fermez le client et fermez le serveur.


3. Optimisation du client et du serveur de transmission TCP

Dans cette partie, nous optimisons le contenu des deux premières parties et implémentons le mode de transmission TCP Fonctions interactives entre client et serveur.
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
  public static void main(String[] args) throws IOException {

    // 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);

  // 4、关闭资源
    s.close();
    ss.close();
  }
}

4. Créez un serveur de conversion de majuscules anglaises

/**
*优化TCP传输的客户端
*/
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class ClientUpdate {
  public static void main(String[] args) throws IOException {

    Socket socket = new Socket("192.168.1.100", 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();
  }
}
Appliquez les propriétés pertinentes de TCP (Transmission Control Protocol, Transmission Control Protocol) pour créer un Basé sur TCP Le serveur de conversion des majuscules anglaises en cours de transmission nécessite : le client saisit les données des lettres et les envoie au serveur ; le serveur reçoit les données et les affiche sur la console, convertit les données en majuscules et les renvoie au client ; jusqu'à ce que le client saisisse " over », la conversion se termine.
/**
*优化TCP传输的服务端
*/
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerUpdate {
  public static void main(String[] args) throws IOException {

    // 1、创建服务端对象
    ServerSocket ss = new ServerSocket(10002);

    // 2、获取连接过来的客户端对象
    Socket s = ss.accept(); //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();
  }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn