亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rudpsender.java

?? 基于UDP的可靠郵件系統
?? JAVA
字號:
package org.hwmhere.udp.send;

import java.io.*;
import java.net.*;

import org.hwmhere.udp.UDPConstant;
import org.hwmhere.util.math.BaseType;

/**
 * @author hwm
 * 
 */
public class RUDPSender {

	private byte[] sendData;// = new byte[UDPConstant.DATA_SIZE];

	private int dataLength;

	private byte[] echoData = new byte[UDPConstant.ECHO_LENGTH];

	private byte[] tempSendData;

	private DatagramSocket sendSocket;

	private InetAddress host;

	private int port;

	/**
	 * 用于發送報文序號的計數 如果初始為0,在RDT2.0中只加不減 只有當一個數據報成功接收并返回ACK后才加一
	 * 
	 * @see #upSequence()
	 * @see #downSequence()
	 */
	private int sequence = 0;

	/**
	 * @param host
	 * @param port
	 * @throws SocketException
	 * @throws UnknownHostException
	 */

	public RUDPSender(InetAddress host, int port, byte[] data) throws Exception {

		if (data.length > UDPConstant.DATA_SIZE) {
			throw new Exception("Data to send is to long.");
		}

		sendData = data;
		dataLength = data.length;

		this.host = host;
		this.port = port;

		sendSocket = new DatagramSocket();
		sendSocket.setSoTimeout(30000);
	}

	public void send() {
		while (!isOver()) {
			try {
				// INFORMation
				System.out.println("Send Datagram " + sequence);
				DatagramPacket sendPacket = getSendPacket();
				// 發送
				sendSocket.send(sendPacket);
				DatagramPacket receivePacket = new DatagramPacket(echoData,
						echoData.length);
				try {
					sendSocket.receive(receivePacket);
					// 成功接受,返回了結果
					if (isACK(receivePacket)) {
						// INFORMation
						System.out.println("Receive Datagram " + sequence
								+ "'s replay");
						upSequence();
					}
				} catch (SocketTimeoutException te) {
					// INFORMation
					System.out.println("Time Out.Continue.");
					continue;
				}
			} catch (IOException e) {
				e.printStackTrace();
				close();
				return;
			}
		}
		// INFORMation
		System.out.println("OK Send Successful!");
		close();
	}

	// TODO:從發送的數據中構造一個需要發送的數據,根據RDT算法
	public DatagramPacket getSendPacket() {

		byte[] tempSequenceByte = getSequenceByte();

		ByteArrayOutputStream bos = new ByteArrayOutputStream();

		bos.write(tempSequenceByte[0]);
		bos.write(tempSequenceByte[1]);
		bos.write(getFlageByte());

		if ((sequence + 1) * UDPConstant.DATA_SEGMENT_UTIL <= dataLength) {
			bos.write(sendData, sequence * UDPConstant.DATA_SEGMENT_UTIL,
					UDPConstant.DATA_SEGMENT_UTIL);
		} else {
			bos.write(sendData, sequence * UDPConstant.DATA_SEGMENT_UTIL,
					dataLength - (sequence * UDPConstant.DATA_SEGMENT_UTIL));
		}
		tempSendData = bos.toByteArray();
		System.out.print("發送數據包長度:" + tempSendData.length);
		return new DatagramPacket(tempSendData, tempSendData.length, host, port);
	}

	public void close() {
		sendSocket.close();
	}

	// TODO:返回是否是ACK
	public boolean isACK(DatagramPacket receivePacket) {
		String answer = new String(receivePacket.getData());
		answer.trim();

		// TODO:getData可能還需要進一步的處理,取出字符串的部分
		if (answer.startsWith(UDPConstant.ACK)) {
			System.out.println("From Server: receive ACK");
			return true;
		} else {
			System.out.println("From Server: receive NAK");
			return false;
		}

	}

	private byte getFlageByte() {

		if (isLast())
			return (byte) 1;
		else
			return (byte) 0;

	}

	/**
	 * @return byte[4]
	 */
	private byte[] getSequenceByte() {

		return BaseType.toLH(sequence);

	}

	// TODO:發送完畢?
	public boolean isOver() {

		if (sequence * UDPConstant.DATA_SEGMENT_UTIL >= dataLength)
			return true;
		return false;
	}

	public boolean isLast() {

		if ((sequence + 1) * UDPConstant.DATA_SEGMENT_UTIL >= dataLength)
			return true;
		return false;
	}

	public DatagramSocket getsendSocket() {
		return sendSocket;
	}

	public void setsendSocket(DatagramSocket sendSocket) {
		this.sendSocket = sendSocket;
	}

	public byte[] getechoData() {
		return echoData;
	}

	public void setechoData(byte[] echoData) {
		this.echoData = echoData;
	}

	public byte[] getSendData() {
		return sendData;
	}

	public void setSendData(byte[] sendData) {
		this.sendData = sendData;
	}

	private void upSequence() {
		sequence++;
	}

	private void downSequence() {
		sequence--;
	}

	public static void main(String args[]) throws Exception {

		while (true) {
			InetAddress host = InetAddress.getByName("localhost");

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

			String sentence = infromUser.readLine();
			byte[] sendData = sentence.getBytes();

			RUDPSender sender = new RUDPSender(host, 6790, sendData);

			sender.send();
		}

	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91精品久久久久久久网曝门| 蜜臀久久久久久久| 2023国产精品自拍| 91精品国产91热久久久做人人| 97se亚洲国产综合在线| 99综合电影在线视频| 床上的激情91.| 成人免费看片app下载| 国产不卡在线视频| eeuss鲁片一区二区三区| 风间由美性色一区二区三区| 粉嫩一区二区三区性色av| 成人免费观看视频| 91丝袜国产在线播放| 色爱区综合激月婷婷| 欧美在线观看一区| 欧美日韩亚洲丝袜制服| 欧美在线观看视频在线| 91精品啪在线观看国产60岁| 日韩一区二区视频在线观看| 精品国产乱码久久久久久1区2区 | 一本到高清视频免费精品| 99久久99久久精品免费观看| 91麻豆免费观看| 69堂国产成人免费视频| 精品国产百合女同互慰| 国产精品传媒视频| 日韩精品一区第一页| 国产在线视视频有精品| 99久久综合国产精品| 欧美网站大全在线观看| 欧美成人性战久久| 亚洲色图一区二区三区| 视频一区视频二区中文字幕| 国产成人免费视频网站| 在线一区二区观看| 精品国产第一区二区三区观看体验| 国产欧美一区二区精品性| 亚洲最新视频在线观看| 国产乱码精品一区二区三| 色欧美日韩亚洲| 久久久久久亚洲综合| 亚洲一区二区三区四区五区中文| 久久91精品久久久久久秒播| 91小视频在线观看| 精品免费99久久| 一区av在线播放| 国产夫妻精品视频| 欧美精品 日韩| 日韩一区在线看| 国产在线一区二区| 欧美精品丝袜中出| 亚洲人成亚洲人成在线观看图片 | 成人18视频日本| 欧美在线|欧美| 中文字幕av在线一区二区三区| 天天综合网天天综合色| 91视频.com| 欧美激情综合五月色丁香小说| 视频精品一区二区| 色欧美日韩亚洲| 国产精品久久久久久久久快鸭 | 99re视频这里只有精品| 精品国产a毛片| 婷婷综合五月天| 在线精品观看国产| 亚洲嫩草精品久久| 成人午夜精品一区二区三区| 日韩片之四级片| 五月婷婷激情综合网| 91国偷自产一区二区开放时间| 亚洲国产精品v| 国产成人综合在线观看| 日韩精品一区二区三区四区视频| 五月综合激情婷婷六月色窝| 日本精品免费观看高清观看| 国产日韩亚洲欧美综合| 国产精品91一区二区| 久久精品亚洲精品国产欧美| 精品在线一区二区三区| 日韩免费电影一区| 久久99精品一区二区三区| 日韩一区二区视频| 免费的国产精品| 日韩精品中文字幕在线不卡尤物| 免费在线观看视频一区| 精品国产一区二区三区忘忧草 | 成人网在线免费视频| 精品成人一区二区| 国产成人精品一区二区三区四区 | 欧美色窝79yyyycom| 亚洲宅男天堂在线观看无病毒| 91久久精品一区二区三区| 一区二区三区四区乱视频| 欧美三级电影在线观看| 性做久久久久久免费观看 | 日韩精品一区国产麻豆| 国模大尺度一区二区三区| 久久嫩草精品久久久精品一| 成人18精品视频| 亚洲综合色区另类av| 91精品国产91久久久久久一区二区| 奇米色777欧美一区二区| 久久精品日韩一区二区三区| 国产成人精品综合在线观看| 亚洲六月丁香色婷婷综合久久| 欧美日韩久久不卡| 国产精品资源在线看| 亚洲精选一二三| 日韩精品一区二区三区中文精品| 国产成人一区在线| 亚洲成人av在线电影| 久久日韩精品一区二区五区| jiyouzz国产精品久久| 日韩主播视频在线| 中文字幕一区二区三区精华液 | 亚洲精品在线免费播放| 97久久精品人人爽人人爽蜜臀| 丝袜美腿高跟呻吟高潮一区| 久久久蜜桃精品| 欧美日韩免费观看一区三区| 国产精品一区二区久久精品爱涩| 亚洲一级二级三级在线免费观看| 久久这里都是精品| 欧美色图在线观看| 成人激情开心网| 男男视频亚洲欧美| 亚洲激情中文1区| 亚洲国产电影在线观看| 日韩视频一区二区三区在线播放| 成人激情av网| 蜜臀av国产精品久久久久| 曰韩精品一区二区| 国产精品入口麻豆九色| 日韩欧美国产综合在线一区二区三区 | 欧美tk—视频vk| 欧美日韩综合在线| 91视频.com| 国产成人免费视频一区| 麻豆一区二区三区| 三级不卡在线观看| 亚洲成a人v欧美综合天堂下载| 国产精品无遮挡| 久久精品亚洲乱码伦伦中文| 欧美大片一区二区| 欧美男生操女生| 欧美日韩一区二区在线观看视频| 91在线一区二区| 波多野结衣欧美| av在线不卡电影| 91视频一区二区三区| 99久久伊人精品| 91麻豆精东视频| 色综合亚洲欧洲| 欧美综合视频在线观看| 欧洲视频一区二区| 欧美色偷偷大香| 日韩一区二区中文字幕| 91精品啪在线观看国产60岁| 日韩一区二区三区免费看| 91精品国产aⅴ一区二区| 日韩小视频在线观看专区| 欧美一级一级性生活免费录像| 欧美色区777第一页| 欧美日韩高清不卡| 69p69国产精品| 日韩欧美国产一区二区在线播放| 欧美不卡激情三级在线观看| 欧美本精品男人aⅴ天堂| www激情久久| 国产精品热久久久久夜色精品三区| 国产精品美女久久久久aⅴ| 亚洲欧美激情插| 天堂一区二区在线免费观看| 美国十次了思思久久精品导航| 精品一区二区三区影院在线午夜| 国产麻豆成人精品| av在线不卡电影| 91超碰这里只有精品国产| 日韩精品中文字幕在线一区| 国产精品久久毛片| 亚洲图片欧美色图| 麻豆成人91精品二区三区| 成人午夜又粗又硬又大| 欧美亚洲国产一区二区三区va | 六月丁香婷婷久久| 国产精品亚洲专一区二区三区| 成人av电影免费观看| 欧美精品tushy高清| 久久久777精品电影网影网| 一区二区三区鲁丝不卡| 另类中文字幕网| 91在线免费看| 日韩一区二区在线观看视频| 国产精品欧美一区喷水| 午夜av一区二区| www.欧美.com| 精品国产一区二区国模嫣然| 亚洲乱码国产乱码精品精小说 | 国产另类ts人妖一区二区|