//1行受信 //切断・タイムアウトでnullが返される public byte[] LineRecv(int sec, ILife iLife) { var tout = new util.Timeout(sec); while (iLife.IsLife()) { //Ver5.1.6 if (_sockQueue.Length == 0) { Thread.Sleep(100); } byte[] buf = _sockQueue.DequeueLine(); //noEncode = false;//テキストである事が分かっている Trace(TraceKind.Recv, buf, false); if (buf.Length != 0) { //Ver5.8.6 Java fix tout.Update(); //タイムアウトの更新 return(buf); } if (SockState != SockState.Connect) { return(null); } if (tout.IsFinish()) { return(null); //タイムアウト } Thread.Sleep(1); } return(null); }
//1行読み込み待機 public Cmd WaitLine(SockTcp sockTcp) { var tout = new util.Timeout(Timeout); while (IsLife()) { Cmd cmd = recvCmd(sockTcp); if (cmd == null) { return(null); } if (cmd.CmdStr != "") { return(cmd); } if (tout.IsFinish()) { return(null); } Thread.Sleep(100); } return(null); }
//受信<br> //切断・タイムアウトでnullが返される public byte[] Recv(int len, int sec, ILife iLife) { var tout = new util.Timeout(sec); var buffer = new byte[0]; try{ if (len <= _sockQueue.Length){ // キューから取得する buffer = _sockQueue.Dequeue(len); } else{ while (iLife.IsLife()){ Thread.Sleep(0); if (0 < _sockQueue.Length){ //Java fix tout.Update(); //少しでも受信があった場合は、タイムアウトを更新する //size=受信が必要なバイト数 int size = len - buffer.Length; //受信に必要なバイト数がバッファにない場合 if (size > _sockQueue.Length){ size = _sockQueue.Length; //とりあえずバッファサイズ分だけ受信する } byte[] tmp = _sockQueue.Dequeue(size); buffer = Bytes.Create(buffer, tmp); //Java fix Ver5.8.2 if (buffer.Length != 0){ break; } } else{ if (SockState != SockState.Connect){ return null; } Thread.Sleep(10); } if (tout.IsFinish()){ buffer = _sockQueue.Dequeue(len); //タイムアウト break; } } } } catch (Exception){ //ex.printStackTrace(); return null; } Trace(TraceKind.Recv, buffer, false); return buffer; }
//1行受信 //切断・タイムアウトでnullが返される public byte[] LineRecv(int sec, ILife iLife) { var tout = new util.Timeout(sec); while (iLife.IsLife()){ //Ver5.1.6 if (_sockQueue.Length == 0){ Thread.Sleep(100); } byte[] buf = _sockQueue.DequeueLine(); //noEncode = false;//テキストである事が分かっている Trace(TraceKind.Recv, buf, false); if (buf.Length != 0){ //Ver5.8.6 Java fix tout.Update(); //タイムアウトの更新 return buf; } if (SockState != SockState.Connect){ return null; } if (tout.IsFinish()){ return null; //タイムアウト } Thread.Sleep(1); } return null; }
//1�s�Ǎ��ҋ@ public Cmd WaitLine(SockTcp sockTcp) { var tout = new util.Timeout(Timeout); while (IsLife()){ Cmd cmd = recvCmd(sockTcp); if (cmd == null){ return null; } if (cmd.CmdStr != ""){ return cmd; } if (tout.IsFinish()){ return null; } Thread.Sleep(100); } return null; }
//受信<br> //切断・タイムアウトでnullが返される public byte[] Recv(int len, int sec, ILife iLife) { var tout = new util.Timeout(sec); var buffer = new byte[0]; try{ if (len <= _sockQueue.Length) { // キューから取得する buffer = _sockQueue.Dequeue(len); } else { while (iLife.IsLife()) { Thread.Sleep(0); if (0 < _sockQueue.Length) { //Java fix tout.Update(); //少しでも受信があった場合は、タイムアウトを更新する //size=受信が必要なバイト数 int size = len - buffer.Length; //受信に必要なバイト数がバッファにない場合 if (size > _sockQueue.Length) { size = _sockQueue.Length; //とりあえずバッファサイズ分だけ受信する } byte[] tmp = _sockQueue.Dequeue(size); buffer = Bytes.Create(buffer, tmp); //Java fix Ver5.8.2 if (buffer.Length != 0) { break; } } else { if (SockState != SockState.Connect) { return(null); } Thread.Sleep(10); } if (tout.IsFinish()) { buffer = _sockQueue.Dequeue(len); //タイムアウト break; } } } } catch (Exception) { //ex.printStackTrace(); return(null); } Trace(TraceKind.Recv, buffer, false); return(buffer); }