コード例 #1
0
    public int RecvTestPacket(ref ushort pktType, ref int seq, byte[] payload, ref int payloadSize){
	var bufSize = m_recvBuf.data.Length;
	var recvRet = RecvFrom(m_recvBuf.data, 0, ref bufSize, SocketFlags.None, ref m_recvAddr);
	
	if((m_lastNetError == SocketError.Success) && (recvRet >= HEADER_SIZE)){
	   m_recvBuf.position = 0;
	   var mc = AmNetUtil.ntohl(m_recvBuf.readUnsignedInt());
	   if(mc != MAGIC_COOKIE){
	       m_lastNetError = SocketError.SocketError;
	   }
	   else {
	       pktType     = AmNetUtil.ntohs(m_recvBuf.readUnsignedShort());
	       var pktlen  = AmNetUtil.ntohs(m_recvBuf.readUnsignedShort());
	       if(payloadSize < (pktlen - HEADER_SIZE)){
		   m_lastNetError = SocketError.SocketError;		   
	       }
	       else {
		   payloadSize = (int)pktlen - (int)HEADER_SIZE;
		   seq         = AmNetUtil.ntohl(m_recvBuf.readInt());
		   if(payloadSize > 0){
		       AmByteArray.Memcpy(payload, m_recvBuf, payloadSize);
		   }
		   m_lastNetError = SocketError.Success;
	       }
	   }	   
	}
	
	return recvRet;
    }    
コード例 #2
0
    public int SendTestPacket(ushort pktType, int seq, byte[] payload, int payloadSize){
	var    pkt   = m_sendBuf;
	int    len   = 0;

	pkt.position = 0;
	pkt.writeUnsignedInt(AmNetUtil.htonl(MAGIC_COOKIE));    len += 4;
	//pkt.writeUnsignedInt(MAGIC_COOKIE);                     len += 4;
	pkt.writeUnsignedShort(AmNetUtil.htons(MSG_TYPE_ECHO)); len += 2;
	pkt.writeUnsignedShort(AmNetUtil.htons((ushort)0));     len += 2;
	pkt.writeInt(AmNetUtil.htonl(seq));                     len += 4;
	if(payloadSize > 0){
	    AmByteArray.Memcpy(pkt, payload, payloadSize); len += payloadSize;
	}	
	pkt.position = 6;
	pkt.writeUnsignedShort(AmNetUtil.htons((ushort)len));
	
	return SendTo(pkt.data, 0, ref len, SocketFlags.None, m_sendAddr);
    }