「重发java」重发授权需要多长时间

博主:adminadmin 2023-01-13 19:24:11 441

今天给各位分享重发java的知识,其中也会对重发授权需要多长时间进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java的问题(扑克牌)

代码仅供参考,如有疑问,欢迎追问:

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

/**

 * 随机扑克牌

 * @author STONE

 * @version 2015-10-28

 */

public class Poker {

//用于记录丢失的手牌数

private static Integer lostTotal = 0;

//用于存放已下发的扑克

private static Integer[] its1 = new Integer[54];

//用于存放当前的扑克

private static Integer[] its2 = new Integer[54];

private static ListInteger lostList = new ArrayListInteger();

public static void main(String[] args) {

Scanner scn = new Scanner(System.in);

for(int i=0;i54;i++){

its1[i] = 0;

its2[i] = 0;

}

System.out.println("系统开始发牌...");

givePoker(5);

System.out.println("发牌完毕,当前手牌为:");

printPoker(its2);

Integer gameTotal = 0;

while(gameTotal10){//循环跑10次,请注意此处发牌没做限制,如果循环次数过大,会导致死循环

System.out.println("请输入需要丢弃的手牌(多张牌格式如下:黑桃1,黑桃2,黑桃3):");

String lost = scn.nextLine();

checkLost(lost);

System.out.println("丢失手牌完毕,当前手牌:");

printPoker(its2);

System.out.println("系统开始重发手牌...");

givePoker(lostTotal);

System.out.println("重发发牌完毕,当前手牌为:");

printPoker(its2);

gameTotal++;

}

scn.close();

}

public static void givePoker(Integer num){//随机分发手牌

int total = 0;

while(totalnum){

int poke = (int)(Math.random()*54);

if(its1[poke] == 0){

its1[poke] = 1;

its2[poke] = 1;

total++;

}

}

lostTotal = 0;

}

public static Boolean checkLost(String lost){//检查需要丢失的手牌

if(lost==null || lost.equals("")){

System.out.println("输入手牌错误,系统无法处理...");

return false;

}

if(lost.indexOf("黑桃")0  lost.indexOf("红心")0  lost.indexOf("梅花")0  lost.indexOf("方块")0){

System.out.println("输入手牌错误,系统无法处理...");

return false;

}

String[] strs = lost.split(",");

Boolean bol = false;

for(String str : strs){

str = str.trim();

if(str==null || str.equals("")) continue;//去掉,防止空格

bol = getPokerNum(str);

}

if(bol){

losePoker();

}

return false;

}

public static void losePoker(){//丢掉手牌

lostTotal = lostList.size();

for(Integer itr : lostList){//丢掉手牌

its2[itr-1] = 0;

}

lostList = new ArrayListInteger();

}

public static Boolean getPokerNum(String str){//获取手牌点数并去掉

try{

Integer itr = 0;

if(str.indexOf("黑桃")==0){

str = str.replace("黑桃", "");

itr = Integer.parseInt(str);

if(itr13){

System.out.println("输入手牌不存在:黑桃"+str);

return false;

}

if(its2[itr-1]==1){

lostList.add(itr);

}

} else if(str.indexOf("红心")==0){

str = str.replace("红心", "");

itr = Integer.parseInt(str);

if(itr13){

System.out.println("输入手牌不存在:红心"+str);

return false;

}

if(its2[itr+12]==1){

lostList.add(itr+13);

}

} else if(str.indexOf("梅花")==0){

str = str.replace("梅花", "");

itr = Integer.parseInt(str);

if(itr13){

System.out.println("输入手牌不存在:梅花"+str);

return false;

}

if(its2[itr+25]==1){

lostList.add(itr+26);

}

} else if(str.indexOf("方块")==0){

str = str.replace("方块", "");

itr = Integer.parseInt(str);

if(itr13){

System.out.println("输入手牌不存在:方块"+str);

return false;

}

if(its2[itr+38]==1){

lostList.add(itr+39);

}

} else if(str.indexOf("小王")==0){

if(its2[52]==1){

lostList.add(53);

}

} else if(str.indexOf("大王")==0){

if(its2[53]==1){

lostList.add(54);

}

}

return true;

} catch( Exception e ){

System.out.println("输入手牌有误...");

return false;

}

}

public static void printPoker(Integer[] its){//打印当前手牌

String result = "";

for(int i=0;iits.length;i++){

if(its[i]==1){//等于1表示当前手牌存在

result+=pukerCheck(i+1)+",";

}

}

System.out.println(result);

}

public static String pukerCheck(Integer itr){//判断扑克类型

/**

 * 1~13黑桃花色、14~26红心花色、27~39梅花花色

 * 40~52方块花色、53小王、54大王

 */

if(1=itr  itr=13){

return "黑桃"+itr;

} else if(14=itr  itr=26){

return "红心"+(itr-13);

} else if(27=itr  itr=39){

return "梅花"+(itr-26);

} else if(40=itr  itr=52){

return "方块"+(itr-39);

} else if(itr==53){

return "小王";

} else if(itr==54){

return "大王";

}

return "";

}

}

测试运行结果:

如何干净的实现Android/Java Socket 长连接通信

Java Socket通信有很多的时候需要我们不断的学习。方面效率虽然不及C与C++但它以灵活语言优势,为大家广为使用。 本文就对在使用java做通信方面程序时候应改注意问题做以说明。

1.长连接、短链接只是针对客户端而言,服务器无所谓长、短;

2.无论同步或者异步通信,发送之后务必要又响应回复,确认收到,负责进行一定范围内重发,例如重发三次;

3.长连接服务器与客户端之间务必需要心跳探测,由客户端主动发起;

4.短连接服务器通用代码:

package com.biesan.sms.gate.unioncom.communication;  

    import com.biesan.commons.Constants;  

    import com.biesan.commons.util.CodeUtil;  

    import com.biesan.sms.gate.unioncom.data.*;  

    import com.biesan.sms.gate.unioncom.util.GateInfo;  

    import java.net.*;  

    import java.io.*;  

    import java.util.*;  

    import org.apache.log4j.*;  

    import spApi.*;  

    public class UnioncomDeliver extends Thread {  

    // stop flag  

    private boolean unInterrupt = true;  

    private boolean unErr = true;  

    //private boolean closeSocketFlag = false;  

    // server socket  

    private ServerSocket serverSo = null;  

    // current socket  

    private Socket so = null 

    private OutputStream output = null;  

    private InputStream input = null;  

    // gate command  

    private SGIP_Command tmpCmd = null;  

    private SGIP_Command cmd = null;  

    private Bind bind = null;  

    private BindResp bindResp = null;  

    //private Unbind unBind = null;  

    private UnbindResp unBindResp = null;  

    private boolean unAcceptErrorFlag = true;  

    Logger unioncomLog = Logger.getLogger(Unioncom

    Deliver.class.getName());  

    public UnioncomDeliver() {  

    }  

    public void run() {  

    unioncomLog.info("Start...");  

    while (unInterrupt) {  

    this.initServer();  

    this.startServices();  

    while (this.unAcceptErrorFlag) {  

    try {  

    //接受连接请求  

    unioncomLog.info("before accept connection!....... 

    FreeMemroy :" + Runtime.getRuntime().freeMemory());  

    this.acceptConnection();  

    unioncomLog.info("after accept connection!....... 

    FreeMemroy :" + Runtime.getRuntime().freeMemory());  

    while (unErr) {  

    cmd = new Command();  

    unioncomLog.info("before read command from stream

    ........... FreeMemroy: " + Runtime.getRuntime().

    freeMemory());  

    tmpCmd = cmd.read(input);  

    unioncomLog.info("after read command from stream " + 

    getCommandString(cmd.getCommandID()) + " FreeMemroy: " + 

    Runtime.getRuntime().freeMemory());  

    if (tmpCmd == null) {  

    unErr = false;  

    break;  

    }  

    switch (cmd.getCommandID()) {  

    // biad ready communication  

    case SGIP_Command.ID_SGIP_BIND: {  

    this.dealBind();  

    break;  

    }// exit bind  

    case SGIP_Command.ID_SGIP_UNBIND: {  

    this.dealUnBind();  

    unioncomLog.info("after unbind connection!....... 

    FreeMemroy :" + Runtime.getRuntime().freeMemory());  

    break;  

    }// deliver  

    ....  

    default : //错误的命令字  

    break;  

    }// switch  

    }// while(unErr)  

    } catch (Exception e) {  

    unioncomLog.error("Unioncom Recv Service Error"  

    + e.getMessage());   

    } finally {  

    if (this.so != null) {  

    this.closeSocket();  

    }  

    this.unErr = true;  

    }  

    }// while (this.unAcceptErrorFlag)  

    try {  

    this.closeServerSocket();  

    sleep(200);// sleep  

    } catch (InterruptedException ie) {  

    }  

    }// while(unInterrupt)  

    }  

    private String getCommandString(int cmd){  

    switch (cmd) {  

    // biad ready communication  

    case SGIP_Command.ID_SGIP_BIND: {  

    return " BIND COMMAND ";   

    }// exit bind  

    case SGIP_Command.ID_SGIP_UNBIND: {  

    return " UNBIND COMMAND ";   

    }// deliver  

    case ...  

    default:  

    return " UNKNOWN COMMAND";   

    }  

    }  

    private void dealBind() {  

    try {  

    bind = new Bind(tmpCmd);  

    if (bind.readbody() != 0) {  

    unioncomLog.warn("Read Bind error");  

    this.unErr = false;  

    }  

    bindResp = new BindResp(tmpCmd.getMsgHead());  

    bindResp.SetResult(0);  

    bindResp.write(output);  

    unioncomLog.debug("Bind success!");  

    } catch (Exception e) {  

    unioncomLog.error("Dela Union Recv Bind Error!" + 

    e.getMessage());  

    this.unErr = false;  

    }  

    }  

    private void dealUnBind() {  

    try {  

    //unBind = (Unbind) tmpCmd;  

    unBindResp = new UnbindResp(tmpCmd.getMsgHead());  

    unBindResp.write(output);  

    unioncomLog.debug("UnBind success!");  

    } catch (Exception e) {  

    unioncomLog.warn("Unbind error!" + e.getMessage());  

    }  

    this.unErr = false;  

    }  

    private void startServices() {  

    boolean unStartServices = true;  

    while (unStartServices) {  

    try {  

    serverSo = new ServerSocket(ugInfo.getLocalServerPort(), 5,  

    InetAddress.getByName(ugInfo.getLocalIpAdd()));  

    //serverSo.setSoTimeout(60000);  

    unStartServices = false;   

    unioncomLog.info("Create union recv socket Ok!");  

    } catch (IOException e) {  

    unioncomLog.warn("Create union recv socket error!"  

    + e.getMessage());  

    unStartServices = true;  

    UnioncomSubmit.thrSlp(3000);  

    }  

    }  

    }  

    private void acceptConnection() {  

    // Accept 失败  

    try {   

    so = serverSo.accept();  

    so.setSoTimeout(10000);  

    } catch (Exception e) {  

    unioncomLog.warn("Accept Error!" + e.getMessage());  

    this.closeServerSocket();  

    this.unAcceptErrorFlag = false;  

    this.unErr=false;  

    }  

    // Accept成功  

    try {  

    input = so.getInputStream();  

    output = so.getOutputStream();  

    } catch (IOException e) {  

    unioncomLog.warn("Get I/O stream Error!" + e.getMessage());  

    this.closeService();  

    this.unAcceptErrorFlag = false;  

    this.unErr=false;  

    }  

    }  

    private void closeSocket() {  

    try {  

    so.close();  

    unioncomLog.info("Socket Close Success!!!");  

    } catch (Exception e) {  

    unioncomLog.error("Socket Close Failure!!!" + e.getMessage());  

    }  

    }  

    private void closeServerSocket() {  

    try {  

    serverSo.close();  

    unioncomLog.info("ServerSocket Close Success!!!");  

    } catch (Exception e) {  

    unioncomLog  

    .error("ServerSocket Close Failure!!!" + e.getMessage());  

    }  

    }  

    private void closeService() {  

    this.closeSocket();  

    this.closeServerSocket();  

    }  

    private void initServer() {  

    this.bind = null;  

    this.bindResp = null;  

    //this.unBind = null;  

    this.unBindResp = null;  

    this.tmpCmd = null;  

    this.cmd = null;  

    this.serverSo = null;  

    this.so = null;  

    this.output = null;  

    this.input = null;  

    this.unErr = true;  

    //this.closeSocketFlag = false;  

    unioncomLog.info("Memory***==="  

    + java.lang.Runtime.getRuntime().freeMemory());  

    }  

    public synchronized void requireStop() {  

    this.unInterrupt = false;  

    unioncomLog.info("Requre interrupt!!!");  

    }  

    public String convertMsgContentCoding

    (int msgCoding, byte[] msgContent) {  

    String deliverContent = null;  

    try {  

    if (msgContent != null) {  

    if (msgCoding == 8) { // 处理ucs32编码  

    deliverContent = new String(msgContent,  

    "UnicodeBigUnmarked");  

    } else if (msgCoding == 0) { // 处理ASCII编码  

    deliverContent = new String(msgContent, "ASCII");  

    } else if (msgCoding == 4) { // 处理binary编码  

    deliverContent = new String(msgContent);  

    } else if (msgCoding == 15) { // 处理GBK编码  

    deliverContent = new String(msgContent, "GBK");  

    // 处理DELIVER数据包的短信息ID  

    } else {  

    unioncomLog.error("编码格式错误!");  

    return "";  

    }  

    } else  

    return "";  

    return deliverContent;  

    } catch (UnsupportedEncodingException ex) {  

    unioncomLog.error("deal content error!" +

     ex.getMessage());  

    return "";  

    }  

    }  

    }

tcp重发期间新数据怎么保存

tcp重发期间新数据保存://前端要调用后端的接口可以是用jsonp前端写法:$.ajax({url:"/xxx.java",data。

局域网不经过路由器,报文传输时延比较小,所以ack响应在tcp连接超时重传时间之内,没有重传,经过外网后,报文在网络中需要查找路由信息转发,这样如果网络中时延超过了tcp超时重传的时间,服务端就会认为客户端没有收到数据,就会重新发送一遍数据。

RTT的计算:

针对网络环境的复杂性,TCP协议以传输往返时间RTT为基础,采用了一种自适应算法确定重传时间。由于RTT对应不同报文段的往返有不同的时延,而且其起伏比较大,导致其不能作为重传超时的标准。

这里将各个报文段的往返时间样本进行加权平均,就得出报文段的平均往返时间,可以记为SRTT,又称为平滑往返时间(Smoothed RTT)。第一次测量往返时间时,SRTT值就取所测量到的RTT样本值,但以后每测量到一个新的往返时间样本。

java采用UDP协议与设备通信有什么好用点的框架

我是用的自己写的一个简单框架,对发送通道做池管理,侦听端口则配置多个端口提高并发量。

做的是工业级的项目,而udp又是老丢包,所以还自己加了一个自动重发机制(设备端接收到数据后会立即给一个接收成功的响应包)。

另外我是做java B/S系统的,所以习惯了 请求-响应 的模式,那么就会有向发设备发送请求,然后等待设备响应结果的处理模式,我用了Object的wait方法来等待响应后的结果,再将线程唤醒。

另外还有一些心跳包、握手包等,感觉做得有点乱,有些地方也搞得比较繁琐(比如:包要加密、包要带上流水号,请设备发送的请求包,还要保留流水号等到设备响应相应的结果)。

说得比较乱,不知道有没有比较成熟的框架,希望

java 数据转发

我们不能保证不丢失,但是我们可以在丢失的时候再发啊,所以我们可以模范TCP协议,下面是我的想法,仅供参考:

1。服务端为每一个发送的数据加一个标识,并在发送的时候该数据加入到一个数组中,这个数组同时要记录这个数据加入的时间(之后要用到这个时间)

2。客户端收到一个数据的时候,要返回服务端一个接受成功的信息,这个信息包含数据标识,服务端收到这个信息就将数组中对应的数据删除;

3。服务器隔一段时间,就读取那个数组,判断数据加入数组的时间到当前时间的时间差,如果时间差大于某一个值(这个值要好好考虑,不过应该要大于1秒),我们就假设发送失败了,那就重发这个数据

4。重复第2和3步骤,直到所有数据发完以及数组为空,那么客户端就应该接受到所有数据了

当然这肯定会影响性能,祝你好运

重发。。java GUI写界面菜鸟的问题。。。

为什么要用CardLayout布局了,直接普通布局就可以了。点击按钮的时候,把右边的panel的引用内容改成对应的,然后刷新显示就可以了。

action(Event buttonClick) {//点击按钮

panel = new 要显示的panel;

刷新显示;

}

关于重发java和重发授权需要多长时间的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。