集册 Java实例教程 使用套接字发送消息

使用套接字发送消息

欢马劈雪     最近更新时间:2020-01-02 10:19:05

558
使用套接字发送消息


import java.io.BufferedReader;

import java.io.InputStreamReader;
/** from 
n o w j a v a . c o m - 时  代  Java**/

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.net.Socket;


public class Sender {

  Socket sender;

  ObjectOutputStream out;

  ObjectInputStream in;

  String packet, ack, str, msg;

  int n, i = 0, sequence = 0;


  Sender() {

  }
/* from N  o w  J a v a . c o m*/

  public void run() {

    try {

      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

      System.out.println("Waiting for Connection....");

      sender = new Socket("localhost", 2005);

      sequence = 0;

      out = new ObjectOutputStream(sender.getOutputStream());

      out.flush();

      in = new ObjectInputStream(sender.getInputStream());

      str = (String) in.readObject();

      System.out.println("reciver     > " + str);

      System.out.println("Enter the data to send....");

      packet = br.readLine();

      n = packet.length();

      do {

        try {


          if (i < n) {

            msg = String.valueOf(sequence);

            msg = msg.concat(packet.substring(i, i + 1));

          } else if (i == n) {

            msg = "end";

            out.writeObject(msg);

            break;

          }

          out.writeObject(msg);

          sequence = (sequence == 0) ? 1 : 0;

          out.flush();

          System.out.println("data sent>" + msg);

          ack = (String) in.readObject();

          System.out.println("waiting for ack.....\n\n");

          if (ack.equals(String.valueOf(sequence))) {

            i++;

            System.out.println("receiver   >  " + " packet recieved\n\n");

          } else {

            System.out.println("Time out resending data....\n\n");

            sequence = (sequence == 0) ? 1 : 0;

          }

        } catch (Exception e) {

        }

      } while (i < n + 1);

      System.out.println(
展开阅读全文